Skip to content

@c0m1t - Hook intro - #12

Merged
sorousht merged 3 commits into
reactjs:fafrom
sorousht:c0m1t-hook-intro
Feb 27, 2019
Merged

sorousht merged 3 commits into
reactjs:fafrom
sorousht:c0m1t-hook-intro

Conversation

@sorousht

Copy link
Copy Markdown
Contributor

This PR was originally made by @c0m1t. Because he/she targeted master directly, I had to close the original one, and submit this PR to fa branch.

@sorousht sorousht self-assigned this Feb 15, 2019
@sorousht sorousht changed the title C0m1t - Hook intro @c0m1t - Hook intro Feb 15, 2019
@sorousht sorousht mentioned this pull request Feb 15, 2019

@zahrajoulaei zahrajoulaei left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

نظر من اینه که هدف ما صرفا ترجمه ی سریع و بدون توجه یک صفحه نیست!
اصلا اصراری نداریم خیلی سریع کل یک صفحه رو سرهم کنیم اما کیفیتی توش نبینیم.
من پیشنهاد میکنم خودتون رو بزارین جای دانشجو و دانش آموزی که به دلیل خوب نبودن سطح زبانش مجبور شده به صفحه فارسی رجوع کنه، و در مرحله ی بعد کسی رو تصور کنید که زبانش هم خوبه اما انقدر ترجمه ی فارسی ری اکت رو با کیفیت دیده که تصمیم گرفته فارسیش رو بخونه!
پس لطفا جوری بنویسید که تمام متن موقع خوندن قابل فهم باشه و احترام به شعور خواننده باشه و در افراد انگیزه و شوق ادامه رو ایجاد کنه
با تشکر

At React Conf 2018, Sophie Alpert and Dan Abramov introduced Hooks, followed by Ryan Florence demonstrating how to refactor an application to use them. Watch the video here:
<blockquote dir="rtl">
<p>نکته</p>
<p>ری‌‌اکت ۱۶.۸.۰ اولین نسخه منتشر شده است که از هوک‌‌ها پشتیبانی می‌‌کند. هنگام ارتقاع، فراموش نکنید همه‌‌ی پکیج‌‌ها شامل React DOM را آپدیت نمایید. React Native در نسخه‌‌ی بعدی پایدار از هوک‌‌ها پشتیبانی خواهد کرد. </p>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@c0m1t @sorousht
از املای این کلمه مطمین هستین؟

من فکر میکنم ارتقاء درست باشد.

http://www.vajehyab.com/dehkhoda/%D8%A7%D8%B1%D8%AA%D9%82%D8%A7%D8%A1

</svg></a>معرفی ویدیویی </h2>

## No Breaking Changes {#no-breaking-changes}
<p dir="rtl">در کنفرانس ۲۰۱۸ react، سوفیا آلپرت(Sophie Alpert) و دن آبرامف(Dan Abramov) هوک‌‌ها را معرفی کردند. بعد از آن رایان فلورنس (Ryan Florence) نشان داد که چگونه می‌‌توان به منظور استفاده از آنها[هوک‌‌ها] یک اپلیکیشن را بازنویسی(refactor) کرد. ویدیوی زیر را ببینید:</p>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

دو اسم سوفی و سوفیا کاملا دو اسم متفاوت هستن.
در اینجا اسم شخص سوفی هست.

@sorousht @c0m1t


## Motivation {#motivation}
<ul dir="rtl">
<li><strong>کاملا اختیاری.</strong> شما می‌‌توانید هوک‌‌ها را بدون نیاز به دوباره نوشتن کدهای قبلی، در چند کامپوننت جدید امتحان کنید. ولی شما در صورت عدم تمایل،‌‌ مجبور به فراگیریی یا استفاده از هوک‌‌ها کنید.</li>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ولی شما در صورت عدم تمایل،‌‌ مجبور به فراگیریی یا استفاده از هوک‌‌ها کنید
!این جمله اصلا ساختار اشتباهی دارد

@sorousht @c0m1t

<h3 dir="rtl" id="its-hard-to-reuse-stateful-logic-between-components"><a href="#its-hard-to-reuse-stateful-logic-between-components" aria-hidden="true" class="anchor"><svg aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>استفاده‌‌ی مجدد از منطق دارای state در بین کامپوننت‌‌ها دشوار است</h3>

### Complex components become hard to understand {#complex-components-become-hard-to-understand}
<p dir="rtl">ری‌‌اکت راهی برای «اضافه‌کردن» یک رفتار قابل استفاده‌‌ی مجدد یه یک کامپوننت را فراهم نمی‌‌کند (برای مثال اتصال به یک store). اگر شما مدتی با ری‌‌اکت کار کرده باشید، ممکن است با الگوهایی مانند <a href="/docs/render-props.html">render props</a> و <a href="/docs/higher-order-components.html">higher-order components</a> آشنا باشید که سعی در حل این مسیله دارند. اما این الگوها شما را مجبور به تغییر ساختار مجدد کامپوننتتان هنگام استفاده‌‌ از آن‌‌ها می‌‌کنند، که این مسیله می‌‌تواند مایه‌‌ی زحمت و سخت‌‌تر شدن فهم کد باشد. اگر به یک اپلیکیشن ری‌‌اکت نوعی در React DevTools نگاه کنید، احتمالا با «wrapper hell»ای از کامپوننت‌‌ها مواجه می‌‌شوید. کامپوننت‌‌هایی که با لایه‌‌هایی از providerها، consumerها، HOCها، render props و دیگر کامپوننت‌‌هایی که به تجرید کمک می‌‌کنند، احاطه شده‌‌اند. در حالی که ما می‌‌توانیم <a href="https://github.com/facebook/react-devtools/pull/503">آن‌‌ها را در DevTools فیلتر کنیم</a>، این [مشکل] به یک مسیله‌‌ی بنیادین اشاره دارد: ری‌‌اکت باید عناصری ابتدایی برای به اشتراک گذاری منطق دارای state فراهم کند.</p>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

احتمالا با «wrapper hell»ای از کامپوننت‌‌ها مواجه می‌‌شوید
@sorousht پیشنهادی برای جایگزینی این قسمت نداری؟
نظر من اینه که این نوع ترجمه اصلا کمکی به فهم خواننده نمیکنه و بدتر گیجش میکنه.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

خود من موقع یادگیری ری‌اکت از روی داکیومنتیشن، به یه سری چیزای اینطوری بر خوردم که مجبور شدم برم و از سورس‌های دیگه نگاه کنم. ولی قطعا این خیلی خوبه که داکیومنتیشن طوری کامل باشه که مخاطب با خوندنش بدون نیاز به منابع خارجی بتونه کلیت همه چی رو بفهمه.
برای wrapper hell معادل فارسی‌ای ندارم ولی اگه هدف صرف ترجمه نباشه و امکان اضافه کردن توضیحات یا عکس برای رسوندن بیشتر مفهوم امکان‌پذیر باشه، میشه این قسمت رو بهبود داد.

<p dir="rtl">با استفاده از هوک‌‌ها، شما می‌‌توانید بخش منطق دارای state را از یک کامپوننت استخراج کنید، بطوری که بطور مستقل بتواند مورد آزمایش و استفاده‌‌ی مجدد قرار گیرد. <strong>هوک ها به شما اجازه می‌‌دهند که بدون ایجاد تغییر در سلسله مراتب کامپوننت‌‌هایتان، از منطق دارای state مجددا استفاده نمایید.</strong> این کار باعث تسهیل در به اشتراک‌‌گذاری هوک‌‌ها بین کامپوننت‌‌های مختلف یا بین جامعه[ی ری‌‌اکت] می‌‌شود.</p>

In many cases it's not possible to break these components into smaller ones because the stateful logic is all over the place. It's also difficult to test them. This is one of the reasons many people prefer to combine React with a separate state management library. However, that often introduces too much abstraction, requires you to jump between different files, and makes reusing components more difficult.
<p dir="rtl">ما در این رابطه بیشتر در <a href="/docs/hooks-custom.html">هوک مخصوص خود را بسازید</a> بحث خواهیم کرد.</p>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

!این جمله اصلا ساختار اشتباهی دارد
پیشنهاد میکنم یکبار متنی که خودتون نوشتین رو از دید یک دانشجو یا دانش آموز بخونید. آیا به نظرتون روانه ؟!
@sorousht @c0m1t

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.ما در این رابطه بیشتر در فلان بخش بحث خواهیم کرد
بنظر من مشکلی نداره البته اگر پیشنهادی دارین حتما بگین

<p dir="rtl">علاوه بر دشوار کردن قابلیت استفاده مجدد از کد و نظم آن، دریافتیم که کلاس‌‌ها می‌‌توانند مانع بزرگی در یادگیری ری‌‌اکت باشند. شما باید یادبگیرید که <code class="gatsby-code-text">this</code> چگونه در جاوااسکریپت کار می‌‌کند، که با نحوه‌‌ی کار کردش در اکثر زبان‌‌ها بسیار متفاوت است. شما باید به یاد داشته باشید تا event handlerها را bind کنید. بدون <a href="https://babeljs.io/docs/en/babel-plugin-transform-class-properties/">syntax proposals</a>، کد بسیار طولانی خواهد بود. آدم‌‌ها می‌‌توانند props، state، و جریان بالا به پایین داده را کاملا دریابند ولی هنوز با کلاس‌‌ها کلنجار بروند. برتری کامپوننت از جنس تابع یا کلاس در ری‌‌اکت و موارد استفاده از آن‌‌ها باعث اختلاف نظر است، حتی در میان دولوپرهای با تجربه‌‌ی ری‌‌اکت.</p>

## Gradual Adoption Strategy {#gradual-adoption-strategy}
<p dir="rtl">بعلاوه، ری‌‌اکت ۵ سال است که عرضه شده است، و ما می‌‌خواهیم در ۵ سال آینده مطرح باشد. همانطور که <a href="https://svelte.technology/">Svelte</a>، <a href="https://angular.io/">Angular</a>،<a href="https://glimmerjs.com/">Glimmer</a>و دیگران نشان می‌‌دهند، <a href="https://en.wikipedia.org/wiki/Ahead-of-time_compilation">کامپایل پیش از موعد</a> کامپوننت‌‌ها، پتانسیل قابلیت‌‌های زیادی را دارد. بالاخص اگر به تمپلت‌‌ها مححدود نباشد. ما اخیرا با

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

غلط املایی:
محدود
@sorousht @c0m1t

<p dir="rtl">همچنین اطلاع داریم که انتظارات برای اضافه کردن دستورات پایه‌‌ی جدید به ری‌‌اکت بسیار بالاست. ما برای خواننده‌‌های کنجکاو یک <a href="https://github.com/reactjs/rfcs/pull/68">RFC با جزییات</a> آماده کرده‌‌ایم که با عمق بیشتری به انگیزه‌‌ها می‌‌پردازد، و دید بیشتری بر تصصمیمات جزیی تصمیم‌‌گیری‌‌ها و تصمیمات مرتبط قبلی فراهم می‌‌کند. </p>

## Frequently Asked Questions {#frequently-asked-questions}
<p dir="rtl"><strong>اساسا، هوک ها در کنار کدهای نوشته‌‌شده از قبل کار خواهند کرد، پس شما می‌‌توانید بصورت تدریجی از آن‌‌ها بهره گیرید.</strong> ما این API آزمایشی را برای این به اشتراک می‌‌گذاریم تا بتوانیم از بازخوردهای سریع افراد در جامعه که برای شکل دادن به آینده‌‌ی ری‌‌اکت مشتاق هستند بهره گیریم. — and we will iterate on Hooks in the open.</p>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and we will iterate on Hooks in the open
دلیل ترجمه نکردن این بخش چیست؟

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ما بصورت عمومی سعی در بهبود هوک‌ها داریم؟

<p dir="rtl"><strong>اساسا، هوک ها در کنار کدهای نوشته‌‌شده از قبل کار خواهند کرد، پس شما می‌‌توانید بصورت تدریجی از آن‌‌ها بهره گیرید.</strong> ما این API آزمایشی را برای این به اشتراک می‌‌گذاریم تا بتوانیم از بازخوردهای سریع افراد در جامعه که برای شکل دادن به آینده‌‌ی ری‌‌اکت مشتاق هستند بهره گیریم. — and we will iterate on Hooks in the open.</p>

We've prepared a [Hooks FAQ page](/docs/hooks-faq.html) that answers the most common questions about Hooks.
<p dir="rtl">در انتها، هیچ عجله‌‌ای برای مهاجرت به هوک‌‌ها وجود ندارد. ما پیشنهاد می‌‌کنیم از هرگونه «بازنویسی بزرگ» بپرهیزید، مخصوصا برای کامپوننت‌‌های کلاسی موجود و پیچیده. برای «تفکر مبتنی بر هوک‌‌ها» مقداری نیازمند تامل است. تجربه‌‌ی ما این است که بهترین کار برای شروع، تمرین و کار با هوک‌‌ها در کامپوننت‌‌های جدید و غیرحیاتی است، و حصول اطمینان از اینکه همه‌‌ی افراد تیم شما با آن‌‌ها ارتباط برقرار کرده‌‌اند. بعد از اینکه هوک‌‌ها را امتحان کردید، لطفا <a href="https://github.com/facebook/react/issues/new">بازخوردهای خود را برای ما بفرستید</a> ، چه مثبت و چه منفی.</p>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

برای «تفکر مبتنی بر هوک‌‌ها» مقداری نیازمند تامل است.
ساختار این جمله غلط است!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

تفکر مبتنی بر هوک‌ها نیازمند تغییر در نگرش ماست

asantarissy pushed a commit to asantarissy/fa.reactjs.org that referenced this pull request Feb 24, 2019
@zahrajoulaei

Copy link
Copy Markdown
Contributor

Hey.there is no new changes for this PR?
I am checking to accept the changes and merge them...
@sorousht @c0m1t

@sorousht

Copy link
Copy Markdown
Contributor Author

@zahrajoulaei It's been a long time since @c0m1t have opened this PR. I know it isn't well written and does not meet our standards for being published, so I'm going to retouch and improve as much as possible by tonight.

@sorousht
sorousht merged commit 0d9c3f5 into reactjs:fa Feb 27, 2019
@tesseralis tesseralis mentioned this pull request Mar 1, 2019
44 of 87 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants