{"componentChunkName":"component---src-templates-docs-js","path":"/docs/react-api.html","result":{"data":{"markdownRemark":{"html":"<p><code class=\"gatsby-code-text\">React</code> نقطه‌ی ورود به کتابخانه‌ی ری‌اکت است. اگر شما React را از تگ <code class=\"gatsby-code-text\">&lt;script&gt;</code> بارگذاری کنید، این APIهای سطح بالا از  <code class=\"gatsby-code-text\">React</code> گلوبال قابل دسترسی هستند. اگر شما از ES6 ‌به‌همراه npm استفاده می‌کنید، می‌توانید بنویسید <code class=\"gatsby-code-text\">import React from &#39;react&#39;</code>. اگر از ES5 به‌همراه npm استفاده می‌کنید، می‌توانید بنویسید <code class=\"gatsby-code-text\">var React = require(&#39;react&#39;)</code>.</p>\n<h2 id=\"overview\"><a href=\"#overview\" aria-hidden 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>مرور کلی </h2>\n<h3 id=\"components\"><a href=\"#components\" aria-hidden 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>کامپوننت‌ها </h3>\n<p>کامپوننت‌های ری‌اکت به شما اجازه می‌دهند تا رابط کاربری را به بخش‌های مستقل با قابلیت استفاده‌ی مجدد تقسیم کنید، و درمورد هر قسمت به صورت جداگانه فکر کنید. کامپوننت‌های ری‌اکت را می‌توان به عنوان زیرکلاسی برای <code class=\"gatsby-code-text\">React.Component</code> یا <code class=\"gatsby-code-text\">React.PureComponent</code> تعریف کرد.</p>\n<ul>\n<li><a href=\"#reactcomponent\"><code class=\"gatsby-code-text\">React.Component</code></a></li>\n<li><a href=\"#reactpurecomponent\"><code class=\"gatsby-code-text\">React.PureComponent</code></a></li>\n</ul>\n<p>اکر شما از کلاس‌های ES6 استفاده نمی‌کنید، می‌توانید به جای آن از  <code class=\"gatsby-code-text\">create-react-class</code> استفاده کنید. بخش <a href=\"/docs/react-without-es6.html\">ری‌اکت بدون استفاده از ES6</a> را برای آگاهی بیشتر ببینید.</p>\n<p>کامپوننت‌های ری‌اکت می‌توانند به شکل تابع نیز تعریف شوند که می‌توان آن‌ها را با memo بسته‌بندی (wrap) کرد:</p>\n<ul>\n<li><a href=\"#reactmemo\"><code class=\"gatsby-code-text\">React.memo</code></a></li>\n</ul>\n<h3 id=\"creating-react-elements\"><a href=\"#creating-react-elements\" aria-hidden 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>ایجاد المنت‌های ری‌اکت </h3>\n<p>ما پیشنهاد می‌کنیم برای توصیف رابط کاربری از <a href=\"/docs/introducing-jsx.html\">JSX</a> استفاده کنید. هر المنت JSX یک Syntactic sugar است برای صدا زدن <a href=\"#createelement\"><code class=\"gatsby-code-text\">()React.createElement</code></a>. اگر از JSX استفاده کنید، معمولا متدهای زیر را به شکل مستقیم فراخوانی نخواهید کرد.</p>\n<ul>\n<li><a href=\"#createelement\"><code class=\"gatsby-code-text\">()createElement</code></a></li>\n<li><a href=\"#createfactory\"><code class=\"gatsby-code-text\">()createFactory</code></a></li>\n</ul>\n<p>برای آگاهی بیشتر از بخش <a href=\"/docs/react-without-jsx.html\">ری‌اکت بدون استفاده از JSX</a> دیدن کنید.</p>\n<h3 id=\"transforming-elements\"><a href=\"#transforming-elements\" aria-hidden 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>تبدیل المنت‌ها </h3>\n<p><code class=\"gatsby-code-text\">React</code>، چندین API برای دست‌کاری کردن المنت‌ها فراهم می‌کند:</p>\n<ul>\n<li><a href=\"#cloneelement\"><code class=\"gatsby-code-text\">()cloneElement</code></a></li>\n<li><a href=\"#isvalidelement\"><code class=\"gatsby-code-text\">()isValidElement</code></a></li>\n<li><a href=\"#reactchildren\"><code class=\"gatsby-code-text\">React.Children</code></a></li>\n</ul>\n<h3 id=\"fragments\"><a href=\"#fragments\" aria-hidden 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>فرگمنت‌ها </h3>\n<p><code class=\"gatsby-code-text\">React</code> همچنین برای یک کامپوننت، امکان رندر کردن چند المنت بدون استفاده از wrapper را فراهم می‌سازد.</p>\n<ul>\n<li><a href=\"#reactfragment\"><code class=\"gatsby-code-text\">React.Fragment</code></a></li>\n</ul>\n<h3 id=\"refs\"><a href=\"#refs\" aria-hidden 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>Refs </h3>\n<ul>\n<li><a href=\"#reactcreateref\"><code class=\"gatsby-code-text\">React.createRef</code></a></li>\n<li><a href=\"#reactforwardref\"><code class=\"gatsby-code-text\">React.forwardRef</code></a></li>\n</ul>\n<h3 id=\"suspense\"><a href=\"#suspense\" aria-hidden 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>تعلیق (Suspense) </h3>\n<p>Suspense به کامپوننت‌ها اجازه می‌دهد تا قبل از رندر شدن، برای چیزی «صبر» کنند. فعلا Suspense فقط یک مورد کاربرد را پشتیبانی می‌کند: <a href=\"/docs/code-splitting.html#reactlazy\">بارگذاری پویای کامپوننت‌ها با استفاده از <code class=\"gatsby-code-text\">React.lazy</code></a>. در آینده، از مورد کاربردهای دیگری چون واکشی داده (data fetching) پشتیبانی خواهد کرد.</p>\n<ul>\n<li><a href=\"#reactlazy\"><code class=\"gatsby-code-text\">React.lazy</code></a></li>\n<li><a href=\"#reactsuspense\"><code class=\"gatsby-code-text\">React.Suspense</code></a></li>\n</ul>\n<h3 id=\"hooks\"><a href=\"#hooks\" aria-hidden 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>هوک‌ها </h3>\n<p><em>هوک‌ها</em> یک افزونه جدید در ری‌اکت ۱۶.۸ هستند. آن‌ها به شما این توانایی را می‌دهند که بدون نوشتن کلاس از state بهره ببرید. هوک‌ها یک <a href=\"/docs/hooks-intro.html\">بخش توضیحات جدا</a> و یک  مرجع API جدا دارند:</p>\n<ul>\n<li>\n<p><a href=\"/docs/hooks-reference.html#basic-hooks\">هوک‌های پایه</a></p>\n<ul>\n<li><a href=\"/docs/hooks-reference.html#usestate\"><code class=\"gatsby-code-text\">useState</code></a></li>\n<li><a href=\"/docs/hooks-reference.html#useeffect\"><code class=\"gatsby-code-text\">useEffect</code></a></li>\n<li><a href=\"/docs/hooks-reference.html#usecontext\"><code class=\"gatsby-code-text\">useContext</code></a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"/docs/hooks-reference.html#additional-hooks\">هوک‌های افزوده</a></p>\n<ul>\n<li><a href=\"/docs/hooks-reference.html#usereducer\"><code class=\"gatsby-code-text\">useReducer</code></a></li>\n<li><a href=\"/docs/hooks-reference.html#usecallback\"><code class=\"gatsby-code-text\">useCallback</code></a></li>\n<li><a href=\"/docs/hooks-reference.html#usememo\"><code class=\"gatsby-code-text\">useMemo</code></a></li>\n<li><a href=\"/docs/hooks-reference.html#useref\"><code class=\"gatsby-code-text\">useRef</code></a></li>\n<li><a href=\"/docs/hooks-reference.html#useimperativehandle\"><code class=\"gatsby-code-text\">useImperativeHandle</code></a></li>\n<li><a href=\"/docs/hooks-reference.html#uselayouteffect\"><code class=\"gatsby-code-text\">useLayoutEffect</code></a></li>\n<li><a href=\"/docs/hooks-reference.html#usedebugvalue\"><code class=\"gatsby-code-text\">useDebugValue</code></a></li>\n</ul>\n</li>\n</ul>\n<hr>\n<h2 id=\"reference\"><a href=\"#reference\" aria-hidden 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>مرجع </h2>\n<h3 id=\"reactcomponent\"><a href=\"#reactcomponent\" aria-hidden 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><code class=\"gatsby-code-text\">React.Component</code> </h3>\n<p><code class=\"gatsby-code-text\">React.Component</code> کلاس پایه است برای کامپوننت‌های ری‌اکت وقتی به روش <a href=\"https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"> کلاس‌های ES6</a> تعریف شده باشند:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token keyword\">class</span> <span class=\"token class-name\">Greeting</span> <span class=\"token keyword\">extends</span> <span class=\"token class-name\">React<span class=\"token punctuation\">.</span>Component</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token function\">render</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">return</span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>h1</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">Hello, </span><span class=\"token punctuation\">{</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>props<span class=\"token punctuation\">.</span>name<span class=\"token punctuation\">}</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>h1</span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p> <a href=\"/docs/react-component.html\">مرجع React.Component API</a> را برای لیستی از متدها و ویژگی‌های مربوط به کلاس پایه <code class=\"gatsby-code-text\">React.Component</code> ببینید.</p>\n<hr>\n<h3 id=\"reactpurecomponent\"><a href=\"#reactpurecomponent\" aria-hidden 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><code class=\"gatsby-code-text\">React.PureComponent</code> </h3>\n<p><code class=\"gatsby-code-text\">React.PureComponent</code> به <a href=\"#reactcomponent\"><code class=\"gatsby-code-text\">React.Component</code></a> شبیه است. تفاوت آن‌ها این است که <a href=\"#reactcomponent\"><code class=\"gatsby-code-text\">React.Component</code></a> تابع <a href=\"/docs/react-component.html#shouldcomponentupdate\"><code class=\"gatsby-code-text\">()shouldComponentUpdate</code></a> را پیاده‌سازی نمی‌کند، ولی <code class=\"gatsby-code-text\">React.PureComponent</code> آن‌را با یک قیاس سطحی props و state پیاده‌سازی می‌کند.</p>\n<p>اگر تابع <code class=\"gatsby-code-text\">render()</code> کامپوننت ری‌اکت شما، در صورت یکسان بودن props و state، خروجی یکسان تولید می‌کند، برای ارتقای کارایی در برخی از موارد می‌توانید از <code class=\"gatsby-code-text\">React.PureComponent</code> استفاده کنید.</p>\n<blockquote>\n<p>نکته</p>\n<p><code class=\"gatsby-code-text\">shouldComponentUpdate()</code> در <code class=\"gatsby-code-text\">React.PureComponent</code> فقط به صورت سطحی (shallow) اشیاء را مقایسه می‌کند. اگر این اشیاء دارای ساختاری پیچیده باشند، ممکن است باعث رخ‌داد منفی کاذب(false-negative) برای تفاوت‌های عمیق‌تر شود. تنها زمانی <code class=\"gatsby-code-text\">PureComponent</code> را extend کنید که توقع دارید state و props ساده‌ باشند، یا زمانی از <a href=\"/docs/react-component.html#forceupdate\"><code class=\"gatsby-code-text\">()forceUpdate</code></a> استفاده کنید که می‌دانید ساختار عمیق داده‌ها تغییر پیدا کرده است. و یا <a href=\"https://facebook.github.io/immutable-js/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">داده‌های تغییرناپذیز </a> را برای تسهیل مقایسه سریع داده‌های تودرتو استفاده کنید.</p>\n<p>علاوه بر این، <code class=\"gatsby-code-text\">shouldComponentUpdate()</code> در <code class=\"gatsby-code-text\">React.PureComponent</code>، به‌روز شدن state و props را در کل زیردرخت کامپوننت درنظر نمی‌گیرد. پس مطمئن شوید که همه‌ی کامپوننت‌های فرزند نیز «pure» باشند.</p>\n</blockquote>\n<hr>\n<h3 id=\"reactmemo\"><a href=\"#reactmemo\" aria-hidden 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><code class=\"gatsby-code-text\">React.memo</code> </h3>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token keyword\">const</span> MyComponent <span class=\"token operator\">=</span> React<span class=\"token punctuation\">.</span><span class=\"token function\">memo</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">function</span> <span class=\"token function\">MyComponent</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">props</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token comment\">/* render using props */</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p><code class=\"gatsby-code-text\">React.memo</code> یک <a href=\"/docs/higher-order-components.html\">کامپوننت مرتبه بالا</a> می‌باشد.</p>\n<p>اگر کامپوننت شما در صورت گرفتن props یکسان، نتیجه‌ی یکسان تولید می‌کند، می‌توانید آن‌را در یک فراخوانی <code class=\"gatsby-code-text\">React.memo</code>، wrap کنید تا با یادداشت‌برداری نتیجه، کارایی را بالا برید. این کار به آن معناست که ری‌اکت رندر کردن کامپوننت را در نظر نمی‌گیرد و آخرین نتایج رندرهای قبلی را درنظر می‌گیرد.</p>\n<p>به صورت پیش‌فرض این فقط یک مقایسه سطحی بین اشیاء موجود در شیء props انجام می‌دهد. اگر می‌خواهید خودتان این مقایسه را کنترل کنید، می‌توانید یک تابع مقایسه شخصی‌سازی شده را به عنوان آرگومان دوم به این تابع بدهید.</p>\n<p><code class=\"gatsby-code-text\">React.memo</code> تنها تغییرات props را بررسی می‌کند. اگر کامپوننت شما درون <code class=\"gatsby-code-text\">React.memo</code> قرار گرفته‌است و در آن از هوک‌های <a href=\"/docs/hooks-state.html\"><code class=\"gatsby-code-text\">useState</code></a> و <a href=\"/docs/hooks-reference.html#usecontext\"><code class=\"gatsby-code-text\">useContext</code></a> استفاده شده‌است، تغییر state یا context باعث رندر شدن مجدد می‌شود.</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token keyword\">function</span> <span class=\"token function\">MyComponent</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">props</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token comment\">/* render using props */</span>\n<span class=\"token punctuation\">}</span>\n<span class=\"token keyword\">function</span> <span class=\"token function\">areEqual</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">prevProps<span class=\"token punctuation\">,</span> nextProps</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token comment\">/*\n  return true if passing nextProps to render would return\n  the same result as passing prevProps to render,\n  otherwise return false\n  */</span>\n<span class=\"token punctuation\">}</span>\n<span class=\"token keyword\">export</span> <span class=\"token keyword\">default</span> React<span class=\"token punctuation\">.</span><span class=\"token function\">memo</span><span class=\"token punctuation\">(</span>MyComponent<span class=\"token punctuation\">,</span> areEqual<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>این روش فقط به عنوان <strong><a href=\"/docs/optimizing-performance.html\">بهینه‌سازی کارایی</a></strong> مورد استفاده است. برای «جلوگیری» از رندر، از آن استفاده نکنید، به خاطر آن‌که می‌تواند به خطا سرانجام یابد.</p>\n<blockquote>\n<p>نکته:</p>\n<p>برخلاف متد <a href=\"/docs/react-component.html#shouldcomponentupdate\"><code class=\"gatsby-code-text\">()shouldComponentUpdate</code></a> در کامپوننت‌های به شکل کلاس، تابع<code class=\"gatsby-code-text\">areEqual</code> مقدار <code class=\"gatsby-code-text\">true</code> را بازمی‌گرداند اگر propها یکسان باشند و <code class=\"gatsby-code-text\">false</code> برمیگرداند اگر propها متفاوت باشند. این رفتاری عکس <code class=\"gatsby-code-text\">shouldComponentUpdate</code>می‌باشد.</p>\n</blockquote>\n<hr>\n<h3 id=\"createelement\"><a href=\"#createelement\" aria-hidden 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><code class=\"gatsby-code-text\">()createElement</code> </h3>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\">React<span class=\"token punctuation\">.</span><span class=\"token function\">createElement</span><span class=\"token punctuation\">(</span>\n  type<span class=\"token punctuation\">,</span>\n  <span class=\"token punctuation\">[</span>props<span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  <span class=\"token punctuation\">[</span><span class=\"token operator\">...</span>children<span class=\"token punctuation\">]</span>\n<span class=\"token punctuation\">)</span></code></pre></div>\n<p>ایجاد و برگرداندن یک <a href=\"/docs/rendering-elements.html\">المنت ری‌اکت</a> جدید با توجه به نوع (type) داده شده. آرگومان نوع داده شده می‌تواند رشته‌ی نام یک تگ (مثل <code class=\"gatsby-code-text\">&#39;div&#39;</code> یا <code class=\"gatsby-code-text\">&#39;span&#39;</code>)، یک نوع <a href=\"/docs/components-and-props.html\">کامپوننت ری‌اکت</a> (کلاس یا تابع)، یا یک نوع <a href=\"#reactfragment\">فرگمنت ری‌اکت</a> باشد.</p>\n<p>کد نوشته شده با <a href=\"/docs/introducing-jsx.html\">JSX</a> تبدیل به حالتی می‌شود که از <code class=\"gatsby-code-text\">React.createElement()</code> استفاده کند. شما در حالت معمول اگر از  JSX استفاده کنید به صورت مستقیم <code class=\"gatsby-code-text\">React.createElement()</code> را فرا نمی‌خوانید. <a href=\"/docs/react-without-jsx.html\">ری‌اکت بدون استفاده از JSX</a> را برای یادگیری بیشتر ببینید.</p>\n<hr>\n<h3 id=\"cloneelement\"><a href=\"#cloneelement\" aria-hidden 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><code class=\"gatsby-code-text\">()cloneElement</code> </h3>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"gatsby-code-text\"><code class=\"gatsby-code-text\">React.cloneElement(\n  element,\n  [props],\n  [...children]\n)</code></pre></div>\n<p>شبیه‌سازی (clone) و برگرداندن یک <code class=\"gatsby-code-text\">المنت</code> به عنوان یک نقطه شروع. المنت جدید، دارای props المنت اصلی همراه با props جدید به شکل ترکیب شده سطحی می‌باشد. فرزندان جدید جایگزین فرزندان قبلی می‌شوند. <code class=\"gatsby-code-text\">key</code> و <code class=\"gatsby-code-text\">ref</code> المنت اصلی محفوظ می‌مانند.</p>\n<p><code class=\"gatsby-code-text\">React.cloneElement()</code> تقریبا برابر است با:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>element.type</span> <span class=\"token spread\"><span class=\"token punctuation\">{</span><span class=\"token punctuation\">...</span><span class=\"token attr-value\">element</span><span class=\"token punctuation\">.</span><span class=\"token attr-value\">props</span><span class=\"token punctuation\">}</span></span> <span class=\"token spread\"><span class=\"token punctuation\">{</span><span class=\"token punctuation\">...</span><span class=\"token attr-value\">props</span><span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">{</span>children<span class=\"token punctuation\">}</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>element.type</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<p> گرچه، این کار <code class=\"gatsby-code-text\">ref</code>ها را محفوظ نگاه می‌دارد. این یه آن معناست که اگر شما یک فرزند را با <code class=\"gatsby-code-text\">ref</code> آن دریافت کنید، آن‌را به شکل اتفاقی از اجداد خود سرقت نمی‌کنید. شما <code class=\"gatsby-code-text\">ref</code> یکسان متصل شده به المنت جدید خواهید داشت.</p>\n<p>این API به عنوان جایگزینی برای <code class=\"gatsby-code-text\">React.addons.cloneWithProps()</code> منسوخ شده معرفی شد.</p>\n<hr>\n<h3 id=\"createfactory\"><a href=\"#createfactory\" aria-hidden 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><code class=\"gatsby-code-text\">()createFactory</code> </h3>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\">React<span class=\"token punctuation\">.</span><span class=\"token function\">createFactory</span><span class=\"token punctuation\">(</span>type<span class=\"token punctuation\">)</span></code></pre></div>\n<p>یک تابع برمی‌گرداند که المنت‌های ری‌اکت با نوع داده شده را تولید می‌کند. مثل <a href=\"#createelement\"><code class=\"gatsby-code-text\">()React.createElement</code></a>، آرگومان نوع داده شده می‌تواند رشته‌ی نام یک تگ (مثل <code class=\"gatsby-code-text\">&#39;div&#39;</code> یا <code class=\"gatsby-code-text\">&#39;span&#39;</code>)، یک نوع <a href=\"/docs/components-and-props.html\">کامپوننت ری‌اکت</a> (کلاس یا تابع)، یا یک نوع <a href=\"#reactfragment\">فرگمنت ری‌اکت</a> باشد.</p>\n<p>این helper یک نوع قدیمی(legacy) محسوب می‌شود و ما شما را تشویق می‌کنیم که به صورت مستقیم از <code class=\"gatsby-code-text\">React.createElement()</code> یا JSX استفاده کنید.</p>\n<p>اگر از JSX استفاده کنید، معمولا <code class=\"gatsby-code-text\">React.createFactory()</code> را مستقیما فراخوانی نخواهید کرد. <a href=\"/docs/react-without-jsx.html\">ری‌اکت بدون استفاده از JSX</a> را برای یادگیری بیشتر ببینید.</p>\n<hr>\n<h3 id=\"isvalidelement\"><a href=\"#isvalidelement\" aria-hidden 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><code class=\"gatsby-code-text\">()isValidElement</code> </h3>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\">React<span class=\"token punctuation\">.</span><span class=\"token function\">isValidElement</span><span class=\"token punctuation\">(</span>object<span class=\"token punctuation\">)</span></code></pre></div>\n<p>بررسی میکند که آیا شیء مورد نظر، المنت ری‌اکت هست یا خیر. <code class=\"gatsby-code-text\">true</code> یا <code class=\"gatsby-code-text\">false</code> برمی‌گرداند.</p>\n<hr>\n<h3 id=\"reactchildren\"><a href=\"#reactchildren\" aria-hidden 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><code class=\"gatsby-code-text\">React.Children</code> </h3>\n<p><code class=\"gatsby-code-text\">React.Children</code> ابزاری برای کار با ساختمان‌داده‌ی غیرشفاف<code class=\"gatsby-code-text\">this.props.children</code> فراهم می‌کند.</p>\n<h4 id=\"reactchildrenmap\"><a href=\"#reactchildrenmap\" aria-hidden 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><code class=\"gatsby-code-text\">React.Children.map</code> </h4>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\">React<span class=\"token punctuation\">.</span>Children<span class=\"token punctuation\">.</span><span class=\"token function\">map</span><span class=\"token punctuation\">(</span>children<span class=\"token punctuation\">,</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>thisArg<span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>یک تابع روی هر فرزند immediate داخل <code class=\"gatsby-code-text\">children</code> فرامی‌خواند که <code class=\"gatsby-code-text\">this</code>  را به عنوان <code class=\"gatsby-code-text\">thisArg</code> تنظیم می‌کند. اگر <code class=\"gatsby-code-text\">children</code> یک آرایه باشد از آن میگذرد و تابع روی تک‌تک فرزند‌های درون آرایه اجرا می‌شود. اگر <code class=\"gatsby-code-text\">children</code>، <code class=\"gatsby-code-text\">null</code> یا <code class=\"gatsby-code-text\">undefined</code> باشد، این متد به جای یک آرایه، <code class=\"gatsby-code-text\">null</code> یا <code class=\"gatsby-code-text\">undefined</code> برمی‌گرداند.</p>\n<blockquote>\n<p>نکته:</p>\n<p>اگر <code class=\"gatsby-code-text\">children</code>، یک <code class=\"gatsby-code-text\">فرگمنت</code> باشد به عنوان یک فرزند تنها با آن برخورد می‌شود و از آن نمی‌گذرد.</p>\n</blockquote>\n<h4 id=\"reactchildrenforeach\"><a href=\"#reactchildrenforeach\" aria-hidden 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><code class=\"gatsby-code-text\">React.Children.forEach</code> </h4>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\">React<span class=\"token punctuation\">.</span>Children<span class=\"token punctuation\">.</span><span class=\"token function\">forEach</span><span class=\"token punctuation\">(</span>children<span class=\"token punctuation\">,</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span>thisArg<span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>مانند <a href=\"#reactchildrenmap\"><code class=\"gatsby-code-text\">()React.Children.map</code></a> است ولی آرایه‌ای برنمی‌گرداند.</p>\n<h4 id=\"reactchildrencount\"><a href=\"#reactchildrencount\" aria-hidden 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><code class=\"gatsby-code-text\">React.Children.count</code> </h4>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\">React<span class=\"token punctuation\">.</span>Children<span class=\"token punctuation\">.</span><span class=\"token function\">count</span><span class=\"token punctuation\">(</span>children<span class=\"token punctuation\">)</span></code></pre></div>\n<p>تعداد کامپوننت‌های موجود در <code class=\"gatsby-code-text\">children</code> را برمی‌گرداند، برابر تعداد دفعاتی است که callback داده شده به <code class=\"gatsby-code-text\">map</code> یا <code class=\"gatsby-code-text\">forEach</code> فراخوانی شده است.</p>\n<h4 id=\"reactchildrenonly\"><a href=\"#reactchildrenonly\" aria-hidden 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><code class=\"gatsby-code-text\">React.Children.only</code> </h4>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\">React<span class=\"token punctuation\">.</span>Children<span class=\"token punctuation\">.</span><span class=\"token function\">only</span><span class=\"token punctuation\">(</span>children<span class=\"token punctuation\">)</span></code></pre></div>\n<p>بررسی می‌کند که آیا <code class=\"gatsby-code-text\">children</code> فقط یک فرزند (المنت ری‌اکت) دارد و آن را برمی‌گرداند. در غیراین‌صورت این متد یک ارور برمی‌گرداند.</p>\n<blockquote>\n<p>نکته:</p>\n<p><code class=\"gatsby-code-text\">React.Children.only()</code>، مقدار برگردانده شده توسط  <a href=\"#reactchildrenmap\"><code class=\"gatsby-code-text\">()React.Children.map</code></a> را قبول نمی‌کند زیرا یک آرایه است نه یک المنت ری‌اکت.</p>\n</blockquote>\n<h4 id=\"reactchildrentoarray\"><a href=\"#reactchildrentoarray\" aria-hidden 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><code class=\"gatsby-code-text\">React.Children.toArray</code> </h4>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\">React<span class=\"token punctuation\">.</span>Children<span class=\"token punctuation\">.</span><span class=\"token function\">toArray</span><span class=\"token punctuation\">(</span>children<span class=\"token punctuation\">)</span></code></pre></div>\n<p>ساختمان‌ داده‌ی غیرشفاف <code class=\"gatsby-code-text\">children</code> را به شکل یک آرایه‌ی مسطح با فرزندهایی که به هرکدام یک کلید اختصاص ‌داده شده برمی‌گرداند. کاربردی است اگر بخواهید مجموغه‌هایی از فرزندان را در متدهای رندر خود دستکاری کنید، مخصوصا اگر بخواهید <code class=\"gatsby-code-text\">this.props.children</code> را قبل از پاس دادن به سطوح پایین‌تر، قطعه‌قطعه یا دوباره مرتب کنید.</p>\n<blockquote>\n<p>نکته:</p>\n<p><code class=\"gatsby-code-text\">React.Children.toArray()</code> در فرایند مسطح‌سازی لیست فرزندان، کلیدها را تغییر می‌دهد تا معنای آرایه‌های تودرتو حفظ شود. به این معنا که، <code class=\"gatsby-code-text\">toArray</code>، هر کلید را پیشوندگذاری می‌کند تا کلید هر المنت به‌‌ همان آرایه‌ی واردشده‌ای محدود شود که دارای آن کلید بوده است .</p>\n</blockquote>\n<hr>\n<h3 id=\"reactfragment\"><a href=\"#reactfragment\" aria-hidden 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><code class=\"gatsby-code-text\">React.Fragment</code> </h3>\n<p>کامپوننت <code class=\"gatsby-code-text\">React.Fragment</code> به شما این توانایی را می‌دهد تا چندین المنت را در متد <code class=\"gatsby-code-text\">render()</code> برگردانید، بدون آن‌که المنت DOM جدیدی بسازید:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token function\">render</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">React.Fragment</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n      Some text.\n      </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>h2</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">A heading</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>h2</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n    </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span><span class=\"token class-name\">React.Fragment</span></span><span class=\"token punctuation\">></span></span>\n  <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p> همچنین می‌توانید آن را به شکل خلاصه‌ی <code class=\"gatsby-code-text\">&lt;&gt;&lt;/&gt;</code> نمایش دهید. برای آگاهی بیشتر، <a href=\"/blog/2017/11/28/react-v16.2.0-fragment-support.html\">ری‌اکت نسخه‌ی 16.2.0: پشتیبانی ارتقا یافته از فرگمنت‌ها</a> را ببینید.</p>\n<h3 id=\"reactcreateref\"><a href=\"#reactcreateref\" aria-hidden 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><code class=\"gatsby-code-text\">React.createRef</code> </h3>\n<p><code class=\"gatsby-code-text\">React.createRef</code> یک <a href=\"/docs/refs-and-the-dom.html\">ref</a> می‌سازد که می‌تواند با استفاده از خصوصیت ref به المنت متصل شود.\n<div class=\"gatsby-highlight\">\n        <pre class=\"gatsby-code-jsx\"><code><span class=\"token keyword\">class</span> <span class=\"token class-name\">MyComponent</span> <span class=\"token keyword\">extends</span> <span class=\"token class-name\">React<span class=\"token punctuation\">.</span>Component</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token function\">constructor</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">props</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">super</span><span class=\"token punctuation\">(</span>props<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"gatsby-highlight-code-line\">    <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>inputRef <span class=\"token operator\">=</span> React<span class=\"token punctuation\">.</span><span class=\"token function\">createRef</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></span>  <span class=\"token punctuation\">}</span>\n\n  <span class=\"token function\">render</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"gatsby-highlight-code-line\">    <span class=\"token keyword\">return</span> <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>input</span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>text<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">ref</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>inputRef<span class=\"token punctuation\">}</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token punctuation\">;</span></span>  <span class=\"token punctuation\">}</span>\n\n  <span class=\"token function\">componentDidMount</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n<span class=\"gatsby-highlight-code-line\">    <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>inputRef<span class=\"token punctuation\">.</span>current<span class=\"token punctuation\">.</span><span class=\"token function\">focus</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></span>  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre>\n        </div></p>\n<h3 id=\"reactforwardref\"><a href=\"#reactforwardref\" aria-hidden 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><code class=\"gatsby-code-text\">React.forwardRef</code> </h3>\n<p><code class=\"gatsby-code-text\">React.forwardRef</code> یک کامپوننت ری‌اکت ایجاد می‌کند که خصوصیت <a href=\"/docs/refs-and-the-dom.html\">ref</a> دریافت شده را به کامپوننت زیرین در درخت فوروارد کند. این روش خیلی معمول نیست مگر در دو مورد:</p>\n<ul>\n<li><a href=\"/docs/forwarding-refs.html#forwarding-refs-to-dom-components\">فوروارد refها به کامپوننت‌های DOM</a></li>\n<li><a href=\"/docs/forwarding-refs.html#forwarding-refs-in-higher-order-components\">فوروارد refها در کامپوننت‌های مرتبه‌ بالا</a></li>\n</ul>\n<p><code class=\"gatsby-code-text\">React.forwardRef</code>، یک تابع رندرکننده را به عنوان آرگومان می‌پذیرد. ری‌اکت این تابع را با <code class=\"gatsby-code-text\">props</code> و <code class=\"gatsby-code-text\">ref</code> به عنوان دو آرگومان صدا می‌زند. این تابع باید یک نود ری‌اکت برگرداند.</p>\n<p><div class=\"gatsby-highlight\">\n        <pre class=\"gatsby-code-jsx\"><code><span class=\"gatsby-highlight-code-line\"><span class=\"token keyword\">const</span> FancyButton <span class=\"token operator\">=</span> React<span class=\"token punctuation\">.</span><span class=\"token function\">forwardRef</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">props<span class=\"token punctuation\">,</span> ref</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">(</span></span><span class=\"gatsby-highlight-code-line\">  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>button</span> <span class=\"token attr-name\">ref</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span>ref<span class=\"token punctuation\">}</span></span> <span class=\"token attr-name\">className</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>FancyButton<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\"></span></span><span class=\"token plain-text\">    </span><span class=\"token punctuation\">{</span>props<span class=\"token punctuation\">.</span>children<span class=\"token punctuation\">}</span><span class=\"token plain-text\"></span>\n<span class=\"token plain-text\">  </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>button</span><span class=\"token punctuation\">></span></span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// You can now get a ref directly to the DOM button:</span>\n<span class=\"token keyword\">const</span> ref <span class=\"token operator\">=</span> React<span class=\"token punctuation\">.</span><span class=\"token function\">createRef</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">FancyButton</span></span> <span class=\"token attr-name\">ref</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span>ref<span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">Click me!</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span><span class=\"token class-name\">FancyButton</span></span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">;</span></code></pre>\n        </div></p>\n<p>در مثال بالا، ری‌اکت، <code class=\"gatsby-code-text\">ref</code>  داده شده به المنت <code class=\"gatsby-code-text\">&lt;FancyButton ref={ref}&gt;</code> را به عنوان آرگومان دوم به تابع رندرکننده صدازده‌ شده درون  <code class=\"gatsby-code-text\">React.forwardRef</code> می‌دهد. این تابع رندرکننده، <code class=\"gatsby-code-text\">ref</code> را به المنت <code class=\"gatsby-code-text\">&lt;button ref={ref}&gt;</code> انتقال می‌دهد.</p>\n<p>در نتیجه، بعد از این‌که ری‌اکت، ref را متصل کرد، <code class=\"gatsby-code-text\">ref.current</code> مستقیما به المنت DOM مربوط به <code class=\"gatsby-code-text\">&lt;button&gt;</code> اشاره می‌کند.</p>\n<p>برای آگاهی بیشتر، <a href=\"/docs/forwarding-refs.html\">فوروارد refها</a> را ببینید.</p>\n<h3 id=\"reactlazy\"><a href=\"#reactlazy\" aria-hidden 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><code class=\"gatsby-code-text\">React.lazy</code> </h3>\n<p><code class=\"gatsby-code-text\">React.lazy()</code> به شما اجازه می‌دهد کامپوننتی تعریف کنید که به شکل پویا بارگذاری می‌شود. این کمک می‌کند تا حجم بسته‌ی نهایی(bundle) کاهش یابد تا بارگذاری کامپوننت‌هایی که در رندر ابتدایی استفاده نشده‌اند را به تعویق اندازد.</p>\n<p>می‌توانید برای یادگیری نحوه‌ی استفاده از آن به <a href=\"/docs/code-splitting.html#reactlazy\">سند بخش‌بندی کد</a> بروید. ممکن است بخواهید <a href=\"https://medium.com/@pomber/lazy-loading-and-preloading-components-in-react-16-6-804de091c82d\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">این مقاله</a> را بررسی کنید، که در مورد چگونگی استفاده از آن با جزئیاتی بیشتر توضیح داده است .</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token comment\">// این کامپوننت به صورت پویا بارگذاری می‌شود</span>\n<span class=\"token keyword\">const</span> SomeComponent <span class=\"token operator\">=</span> React<span class=\"token punctuation\">.</span><span class=\"token function\">lazy</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token keyword\">import</span><span class=\"token punctuation\">(</span><span class=\"token string\">'./SomeComponent'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>توجه کنید که کامپوننت‌های <code class=\"gatsby-code-text\">lazy</code> نیازمند وجود یک کامپوننت <code class=\"gatsby-code-text\">&lt;React.Suspense&gt;</code> در سطوح بالاتر درخت رندر هستند. این نحوه‌ی مشخص کردن یک loading indicator است.</p>\n<blockquote>\n<p><strong>نکته</strong></p>\n<p>استفاده از <code class=\"gatsby-code-text\">React.lazy</code>همراه با import پویا نیازمند آن است که Promiseها در محیط جاوااسکریپت قابل استفاده باشند. این نیازمند یک polyfill روی IE11 و کمتر از آن است.</p>\n</blockquote>\n<h3 id=\"reactsuspense\"><a href=\"#reactsuspense\" aria-hidden 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><code class=\"gatsby-code-text\">React.Suspense</code> </h3>\n<p><code class=\"gatsby-code-text\">React.Suspense</code> به شما اجازه می‌دهد loading indicator را مشخص کنید در حالتی که برخی کامپوننت‌های زیرین آن در درخت هنوز آماده‌ی رندر نباشند. فعلا، کامپوننت‌های با بارگذاری lazy، <strong>تنها</strong> مورد کاربردی است که <code class=\"gatsby-code-text\">&lt;React.Suspense&gt;</code> از آن پشتیبانی می‌کند:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token comment\">// این کامپوننت به صورت پویا بارگذاری می‌شود</span>\n<span class=\"token keyword\">const</span> OtherComponent <span class=\"token operator\">=</span> React<span class=\"token punctuation\">.</span><span class=\"token function\">lazy</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token keyword\">import</span><span class=\"token punctuation\">(</span><span class=\"token string\">'./OtherComponent'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">MyComponent</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>\n    <span class=\"token comment\">// Displays &lt;Spinner> until OtherComponent loads</span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">React.Suspense</span></span> <span class=\"token attr-name\">fallback</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">Spinner</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n      </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n        </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">OtherComponent</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token plain-text\">\n      </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n    </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span><span class=\"token class-name\">React.Suspense</span></span><span class=\"token punctuation\">></span></span>\n  <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>این قسمت در <a href=\"/docs/code-splitting.html#reactlazy\">راهنمای بخش‌بندی کد</a> توضیح داده شد‌ه‌است. توجه کنید که کامپوننت‌های <code class=\"gatsby-code-text\">lazy</code> می‌توانند در اعماق یک درخت <code class=\"gatsby-code-text\">Suspense</code> موجود باشند (نیازی نیست که تک‌تک آن‌ها را به این شکل wrap کنید) . بهترین تمرین این است که <code class=\"gatsby-code-text\">&lt;Suspense&gt;</code> را جایی قرار دهید که میخواهید یک  loading indicator مشاهده کنید، اما <code class=\"gatsby-code-text\">lazy()</code> را جایی قرار دهید که می‌خواهید کد را بخش‌بندی کنید.</p>\n<p>گرچه این امکان فعلا وجود ندارد، در آینده برنامه‌ریزی کرده‌ایم که به  <code class=\"gatsby-code-text\">Suspense</code> اجازه دهیم تا به سناریوهای دیگری چون واکشی داده رسیدگی کند. در این مورد می‌توانید به <a href=\"/blog/2018/11/27/react-16-roadmap.html\">نقشه‌ی راه ما</a> مراجعه کنید.</p>\n<blockquote>\n<p>نکته:</p>\n<p><code class=\"gatsby-code-text\">React.lazy()</code> و <code class=\"gatsby-code-text\">&lt;React.Suspense&gt;</code> هنوز توسط <code class=\"gatsby-code-text\">ReactDOMServer</code> پشتیبانی نمی‌شوند. این یک محدودیت شناخته شده است که در آینده برطرف خواهد شد.</p>\n</blockquote>","frontmatter":{"title":"API سطح بالای React","next":null,"prev":null},"fields":{"path":"content/docs/reference-react.md","slug":"docs/react-api.html"}}},"pageContext":{"slug":"docs/react-api.html"}},"staticQueryHashes":[]}