{"componentChunkName":"component---src-templates-blog-js","path":"/blog/2020/10/20/react-v17.html","result":{"data":{"markdownRemark":{"html":"<p>امروز ، نسخه ۱۷ ری اکت را منتشر می‌کنیم! ما درباره منتشر کردن ری‌اکت نسخه ۱۷ و تغییراتی که در آن ایجاد شده‌است به طور مفصل در <a href=\"/blog/2020/08/10/react-v17-rc.html\">پست نسخه برگزیده‌ی انتشار (rc) ری اکت ۱۷.۰.۰</a> صحبت کرده‌ایم . این پست خلاصه‌ای از آن است ، بنابراین اگر پست قبلی راجع به نسخه برگزیده‌ی انتشار ری اکت ۱۷.۰.۰ را خوانده‌اید ، می‌توانید از خواندن این پست صرف‌نظر کنید.</p>\n<h2 id=\"قابلیت-جدیدی-وجود-ندارد\"><a href=\"#%D9%82%D8%A7%D8%A8%D9%84%DB%8C%D8%AA-%D8%AC%D8%AF%DB%8C%D8%AF%DB%8C-%D9%88%D8%AC%D9%88%D8%AF-%D9%86%D8%AF%D8%A7%D8%B1%D8%AF\" 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<p>نسخه ۱۷ ری‌اکت به دلیل این‌که هیچ قابلیت جدیدی برای توسعه‌دهندگان ندارد ، غیرمعمول به‌نظر می‌رسد. در عوض، در درجه اول در این نسخه تمرکز بر روی این است که <strong>خود ری‌آکت را آسان‌تر ارتقا دهیم</strong>.</p>\n<p>به خصوص، ری‌اکت ۱۷ نسخه‌ای است که انشار آن سکویی امن برای جایگزینی یک درخت با درختی که با یک نسته متفاوت ری‌اکت ساخته شده‌است، فراهم می‌کند.</p>\n<p>همچنین قراردادن ری‌اکت درون برنامه‌ای که با تکنولوژی‌های دیگر ساخته‌شده‌است را آسان‌تر می‌کند.</p>\n<h2 id=\"ارتقاهای-تدریجی\"><a href=\"#%D8%A7%D8%B1%D8%AA%D9%82%D8%A7%D9%87%D8%A7%DB%8C-%D8%AA%D8%AF%D8%B1%DB%8C%D8%AC%DB%8C\" 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<p><strong>ری‌اکت ۱۷ ارتقا تدریحی را ممکن می‌کند.</strong> زمانی که شما از ری اکت نسخه ۱۵ به ۱۶ (یا حالا از ۱۶ به ۱۷) ارتقا می‌دهید، معمولا شما تمام برنامه را یک‌باره به‌روز رسانی خواهید کرد. به این‌صورت ممکن است برای بیشتر برنامه‌ها کار کند. اما اگر کد های شما چندین سال پیش نوشته شده باشد و در این مدت به صورت فعال از آن نگهداری نشده باشد، می‌تواند بسیار چالش برانگیز باشد. در حالی‌که ممکن است دو نسخه متفاوت از ری‌اکت درون یک صفحه وجود داشته باشد، تا پیش از ری‌اکت ۱۷ می‌توانست شکننده و باعث بروز مشکلاتی برای رویداد‌ها شود.`<code class=\"gatsby-code-text\"></code></p>\n<p>ما اکثر این مشکلات را با ری‌اکت ۱۷ برطرف می‌کنیم. این بدان معنی است که <strong>زمانی که ری‌اکت ۱۸ و نسخه‌های آینده منتشر شود، شما گزینه‌های بیشتری خواهید داشت</strong>. اولین گزینه ارتقا یک‌باره‌ی کل برنامه است، شبیه به چیزی که قبلا اتفاق می‌افتاد. اما حالا شما گزینه‌ی دیگری برای ارتقا برنامه خود به شکل تکه تکه دارید. برای مثال شما می‌خواهید بیشتر برنامه خود را به نسخه ۱۸ ری‌اکت به‌روز رسانی کنید اما تصمیم می‌گیرید یک lazy-loaded dialog یا یک زیر مجموعه (subroute) از برنامه را روی نسخه ۱۷ نگه دارید.</p>\n<p> به معنی این نیست که شما <em>مجبورید</em> برنامه خود را به شکل تدریجی ارتقا دهید. بلکه <strong>ارتقا یکباره‌ی کل برنامه برای بیشتر موارد بهترین راهکار است.</strong> اجرای هم‌زمان دو نسخه از ری‌اکت حتی اگر یکی از آن ها به شکل lazy-load اجرا شوند نیز هنوز ایده‌آل نیست. اگرچه برای برنامه‌های بزرگی که دیگر به طور فعالانه نگهداری نمی‌شوند این گزینه می‌تواند منطقی به‌نظر برسد و ری‌اکت ۱۷ مانع از عقب ماندن این دسته از برنامه‌ها می‌شود.</p>\n<p>ما یک <a href=\"https://github.com/reactjs/react-gradual-upgrade-demo/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">مخزن کد نمونه</a> آماده کرده‌ایم که چگونه یک نسخه قدیمی از ری‌اکت را اگر لازم است به شکل lazy-load اجرا کنید. این مثال از Create React App استفاده می‌کند. اما با دیگر راهکارهای مشابه که از ابزار های دیگری استفاده می‌کنند نیز این امر ممکن است، ما از دیگر مقال‌هایی که با ابزار‌های دیگر به عنوان pull request برای ما ارسال شود، استقبال می‌کنیم.</p>\n<blockquote>\n<p>یادداشت</p>\n<p>ما <strong>تغییرات دیگر را</strong> به بعد از ری‌اکت ۱۷ موکول کرده‌ایم. هدف از انتشار این نسخه فعال کردن قابلیت ارتقا تدریجی است. اگر ارتقا به ری اکت ۱۷ پیچیده شود هدف آن با شکست روبرو خواهد شد.</p>\n</blockquote>\n<h2 id=\"تغییراتی-در-محول-کننده-رویدادها-event-delegation\"><a href=\"#%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1%D8%A7%D8%AA%DB%8C-%D8%AF%D8%B1-%D9%85%D8%AD%D9%88%D9%84-%DA%A9%D9%86%D9%86%D8%AF%D9%87-%D8%B1%D9%88%DB%8C%D8%AF%D8%A7%D8%AF%D9%87%D8%A7-event-delegation\" 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>تغییراتی در محول کننده رویداد‌ها (event delegation)</h2>\n<p>برای فعال کردن قابلیت ارتقا تدریجی، ما به کمی تغییر در سیستم رویدادهای ری‌اکت نیاز داشتیم. ری اکت ۱۷ انتشار یک نسخه major  است به این علت که این تغییرات می‌توانند شکننده باشند. شما می‌توانید <a href=\"/docs/faq-versioning.html#breaking-changes\">سوالات متداول مارا نسبت به این موضوع</a> را بخوانید تا درباره تعهد ما نسبت به ثبات این تغییرات، اطلاعت لازم را به‌دست آورید.</p>\n<p>ری اکت ۱۷ دیگر هیچ یک از event handler ها را به سطح <code class=\"gatsby-code-text\">document</code>متصل نمی‌کند. در عوض، آن را به [المنت] دربردارنده ریشه DOM که درخت ری اکت از آن رندر می‌شود، متصل می کند:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token keyword\">const</span> rootNode <span class=\"token operator\">=</span> document<span class=\"token punctuation\">.</span><span class=\"token function\">getElementById</span><span class=\"token punctuation\">(</span><span class=\"token string\">'root'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\nReactDOM<span class=\"token punctuation\">.</span><span class=\"token function\">render</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\">App</span></span> <span class=\"token punctuation\">/></span></span><span class=\"token punctuation\">,</span> rootNode<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>در ری اکت ۱۶ و قبل‌تر، ری‌اکت برای اکثر رویداد هایش از <code class=\"gatsby-code-text\">document.addEventListener()</code> استفاده می‌کرد. ری‌اکت ۱۷ با صدا زدن <code class=\"gatsby-code-text\">rootNode.addEventListener()</code> این کار را در پشت پرده انجام می‌دهد.</p>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/bb4b10114882a50090b8ff61b3c4d0fd/31868/react_17_delegation.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n  \n  <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 840px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 77.14285714285715%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsSAAALEgHS3X78AAACcUlEQVQ4y21T2W4TMRTNr0MfgDeEkPgSJF55JarUJSVpm07WaZLZV+/24XomE9LFypEd3zPnrh59nHFcED5MGT7fc/wIBL7OOT7ds+7O21/D878/CXwjfHnov7042kYhs/DYEnbcIpYOB+HwLIGQO7IZDJyBFxIvEh6u+2Z7Zh/htBz9bL8bAbO7AjTDu8u5427fmEaWjN7MtUHBOPKiRB7O0Nz/gkjm0G3a2TseHbS1KIVCUTfI8vxkGzByHbFHXdfYRwni9RSu3MAqBpWvYXhxDKyPjHOO/X7fwS9LTgbbaDhYY8AYQ11VOGQVZJPAippQwTQxZWdOaXnBgjJJkhjyRSVcX0NDHhqpwLQFbxtsSobn7ABIEpQNDMvgjOzSY1KjVQYNE1jscgTMYRm14Kp3OBqUGV0cuMFkFeJxl6AsI5iWhLSkPe0E/VLGIhUGQVrh5zjA9abCrpBYxexlynErcbmOMNnnmEQ15k8TsOrQRdWlfOT56O52KS43CcaLGL9nzyi4QFQqKO3Hhog+2CCr8TcXeGgtVlWLeTBBRBFLxSnl/FSniCncxRVuMoPHFvgTNphFJaLWQJvjHHLjcHsoMU1KzNISD0mKx3CLec5oPAoYrfrGERYFw+W+wXUqcVsajMO6E1xXCi3Vt4vQ0683ByypGUsq8oK6F9QK61ZDklcMo0W8ZdHiZht3L+kqFpjlCstGo1Q971TDgkss8wZPWYGAhNf07ErtXowEjg8gLGpMM4G7RGDF+mdoXs+hV2dEjqiDibRoTT/5/im6swj9f9/pRPRCFTk98/t/bM7uSAhvInuP589aU1mk7ODP/wCR7n8+8QwuZQAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n    >\n      <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"یک دیاگرام که نشان می‌دهد که چگونه ری‌اکت ۱۷ رویدادها را به ریشه‌ها به جای document متصل می‌کند\"\n        title=\"\"\n        src=\"/static/bb4b10114882a50090b8ff61b3c4d0fd/1e088/react_17_delegation.png\"\n        srcset=\"/static/bb4b10114882a50090b8ff61b3c4d0fd/65ed1/react_17_delegation.png 210w,\n/static/bb4b10114882a50090b8ff61b3c4d0fd/d10fb/react_17_delegation.png 420w,\n/static/bb4b10114882a50090b8ff61b3c4d0fd/1e088/react_17_delegation.png 840w,\n/static/bb4b10114882a50090b8ff61b3c4d0fd/78612/react_17_delegation.png 1260w,\n/static/bb4b10114882a50090b8ff61b3c4d0fd/21cdd/react_17_delegation.png 1680w,\n/static/bb4b10114882a50090b8ff61b3c4d0fd/31868/react_17_delegation.png 3496w\"\n        sizes=\"(max-width: 840px) 100vw, 840px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n    </p>\n<p>ما متوجه این موضوع شدیم که <a href=\"https://github.com/facebook/react/issues/7094\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">بسیاری از</a> <a href=\"https://github.com/facebook/react/issues/8693\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">مشکلات</a> <a href=\"https://github.com/facebook/react/issues/12518\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">گزارش شده</a> <a href=\"https://github.com/facebook/react/issues/13451\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">در بیشتر</a> <a href=\"https://github.com/facebook/react/issues/4335\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">این</a> <a href=\"https://github.com/facebook/react/issues/1691\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">سال ها</a> <a href=\"https://github.com/facebook/react/issues/285#issuecomment-253502585\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">که </a> <a href=\"https://github.com/facebook/react/pull/8117\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">در بخش</a> <a href=\"https://github.com/facebook/react/issues/11530\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">مشکلات</a> <a href=\"https://github.com/facebook/react/issues/7128\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">ثبت شده برای ما</a> وجود داشت مربوط به در هم آمیخته شدن کد های ری اکتی با کد های غیر ری اکتی بود که این مورد با یک روش جدید برطرف گردید.</p>\n<p>اگر شما با این تغییرات با خطا مواجه شدید, <a href=\"/blog/2020/08/10/react-v17-rc.html#fixing-potential-issues\">اینجا یک راه رایج برای برطرف کردن آن وجود دارد</a>.</p>\n<h2 id=\"تغییرات-اساسی-دیگر\"><a href=\"#%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1%D8%A7%D8%AA-%D8%A7%D8%B3%D8%A7%D8%B3%DB%8C-%D8%AF%DB%8C%DA%AF%D8%B1\" 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<p><a href=\"/blog/2020/08/10/react-v17-rc.html#other-breaking-changes\">در پست معرفی ری‌اکت ۱۷ نسخه برگزیده انتشار (rc)</a> ما تغییرات اساسی موجود در ری اکت ۱۷ را توضیح داده‌ایم .</p>\n<p>تا کنون ما با توجه به تغییرات صورت گرفته تنها مجبور به تغییر کمتر از بیست کامپوننت از بیش از ۱۰۰,۰۰۰ کامپوننت موجود در Facebook شده‌ایم. بنابراین <strong>ما انتظار داریم که اکثر برنامه‌ها بتوانند بدون مشکل به نسخه ۱۷ از ری‌اکت ارتقا پیدا کنند</strong>. لطفا اگر به مشکلی برخورد کردید <a href=\"https://github.com/facebook/react/issues\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">آن را با ما در میان بگذارید</a>.</p>\n<h2 id=\"تغییر-شکل-جدید-jsx\"><a href=\"#%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1-%D8%B4%DA%A9%D9%84-%D8%AC%D8%AF%DB%8C%D8%AF-jsx\" 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>تغییر شکل جدید JSX</h2>\n<p>ری اکت ۱۷ از <a href=\"/blog/2020/09/22/introducing-the-new-jsx-transform.html\">تغییر شکل جدید JSX</a> پشتیبانی می‌کند. ما همچنین در نسخه ۱۶.۱۴۰ و ۱۵.۷.۰ و ۰.۱۴.۱۰ از این قابلیت پشتیبانی خواهیم کرد. به این مورد توجه کنید که این قابلیت کاملا اختیاری است و شما مجبور به استفاده از آن نیستید. تغییر شکل قبلی JSX را می‌توانید همچنان استفاده کنید و برنامه‌ای برای حذف پشتیبانی از آن وجود ندارد .</p>\n<h2 id=\"ری-اکت-نیتیو\"><a href=\"#%D8%B1%DB%8C-%D8%A7%DA%A9%D8%AA-%D9%86%DB%8C%D8%AA%DB%8C%D9%88\" 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<p>ری‌اکت نیتیو برنامه زمانی مشخصی برای انتشار دارد. ما در حال حاضر انتظار پشتیبانی از ری اکت ۱۷ برای استفاده در ری اکت نیتیو ۰.۶۵ داریم، اما نسخه دقیق آن باید تغییر کند. مثل همیشه شما می‌توانید بحث‌های مربوط به انتشار ری‌اکت نیتیو را در انجمن مربوط به آن <a href=\"https://github.com/react-native-community/releases\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">پیگیری کنید</a>.</p>\n<h2 id=\"installation\"><a href=\"#installation\" 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<p>برای نصب ری اکت 17 توسط npm این خط را اجرا کنید :</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"gatsby-code-bash\"><code class=\"gatsby-code-bash\"><span class=\"token function\">npm</span> <span class=\"token function\">install</span> react@17.0.0 react-dom@17.0.0</code></pre></div>\n<p>برای نصب ری اکت 17 توسط yarn این خط را اجرا کنید :</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"gatsby-code-bash\"><code class=\"gatsby-code-bash\"><span class=\"token function\">yarn</span> <span class=\"token function\">add</span> react@17.0.0 react-dom@17.0.0</code></pre></div>\n<p>همچنین ما UDM Build هایی از ری اکت را توسط سرور های CDN امان برای شما فراهم کردیم :</p>\n<div class=\"gatsby-highlight\" data-language=\"html\"><pre class=\"gatsby-code-html\"><code class=\"gatsby-code-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">crossorigin</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>https://unpkg.com/react@17.0.0/umd/react.production.min.js<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">crossorigin</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>https://unpkg.com/react-dom@17.0.0/umd/react-dom.production.min.js<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<p>برای <a href=\"/docs/installation.html\">جزئیات بیشتر نصب</a> به مستندات سایت رجوع کنید.</p>\n<h2 id=\"changelog\"><a href=\"#changelog\" 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=\"react\"><a href=\"#react\" 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>React </h3>\n<ul>\n<li>اضافه شدن <code class=\"gatsby-code-text\">react/jsx-runtime</code> و <code class=\"gatsby-code-text\">react/jsx-dev-runtime</code> برای <a href=\"https://babeljs.io/blog/2020/03/16/7.9.0#a-new-jsx-transform-11154-https-githubcom-babel-babel-pull-11154\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">تغییر شکل جدید JSX</a>. (<a href=\"https://github.com/lunaruan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@lunaruan</a> در <a href=\"https://github.com/facebook/react/pull/18299\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18299</a>)</li>\n<li>ساخته شدن کامپوننت stacks برای مشکلات مرسوم frames ها . (<a href=\"https://github.com/sebmarkbage\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sebmarkbage</a> در <a href=\"https://github.com/facebook/react/pull/18561\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18561</a>)</li>\n<li>توانایی استفاده از <code class=\"gatsby-code-text\">displayName</code> در context برای ارتقا stacks. (<a href=\"https://github.com/eps1lon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@eps1lon</a> در <a href=\"https://github.com/facebook/react/pull/18224\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18224</a>)</li>\n<li>ممنوع شدن استفاده از <code class=\"gatsby-code-text\">&#39;use strict&#39;</code> در نفوذ به UMD bundles. (<a href=\"https://github.com/koba04\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@koba04</a> در <a href=\"https://github.com/facebook/react/pull/19614\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#19614</a>)</li>\n<li>پایان استفاده از <code class=\"gatsby-code-text\">fb.me</code>برای ریدایرکت کردن  . (<a href=\"https://github.com/cylim\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@cylim</a> در <a href=\"https://github.com/facebook/react/pull/19598\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#19598</a>)</li>\n</ul>\n<h3 id=\"react-dom\"><a href=\"#react-dom\" 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>React DOM </h3>\n<ul>\n<li>محول شدن رویداد ها به Root به جای  <code class=\"gatsby-code-text\">document</code>. (<a href=\"https://github.com/trueadm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@trueadm</a> در <a href=\"https://github.com/facebook/react/pull/18195\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18195</a> and <a href=\"https://github.com/facebook/react/pulls?q=is%3Apr+author%3Atrueadm+modern+event+is%3Amerged\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">others</a>)</li>\n<li>پاکسازی تمامی UseEffect ها قبل از اجرا شدن هر UseEffect دیگر . (<a href=\"https://github.com/bvaughn\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@bvaughn</a> در <a href=\"https://github.com/facebook/react/pull/17947\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#17947</a>)</li>\n<li>اجرای تابع پاک کننده<code class=\"gatsby-code-text\">useEffect</code>  به شمل همزمان. (<a href=\"https://github.com/bvaughn\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@bvaughn</a> در <a href=\"https://github.com/facebook/react/pull/17925\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#17925</a>)</li>\n<li>استفاده مرورگراز <code class=\"gatsby-code-text\">focusin</code> و <code class=\"gatsby-code-text\">focusout</code> برای <code class=\"gatsby-code-text\">onFocus</code> و <code class=\"gatsby-code-text\">onBlur</code>. (<a href=\"https://github.com/trueadm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@trueadm</a> در <a href=\"https://github.com/facebook/react/pull/19186\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#19186</a>)</li>\n<li>اجبار بر همه رویداد های<code class=\"gatsby-code-text\">Capture</code> به استفاده از Capture مورد استفاده در مرورگر. (<a href=\"https://github.com/trueadm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@trueadm</a> در <a href=\"https://github.com/facebook/react/pull/19221\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#19221</a>)</li>\n<li>حل مشکل رویداد <code class=\"gatsby-code-text\">onScroll</code>. (<a href=\"https://github.com/gaearon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@gaearon</a> در <a href=\"https://github.com/facebook/react/pull/19464\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#19464</a>)</li>\n<li>دریافت خطا اگر از <code class=\"gatsby-code-text\">forwardRef</code> یا <code class=\"gatsby-code-text\">memo</code>در کامپوننت استفاده کنید و خروجی  <code class=\"gatsby-code-text\">undefined</code> به شما برگرداند. (<a href=\"https://github.com/gaearon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@gaearon</a> در <a href=\"https://github.com/facebook/react/pull/19550\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#19550</a>)</li>\n<li>حذف event pooling. (<a href=\"https://github.com/trueadm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@trueadm</a> در <a href=\"https://github.com/facebook/react/pull/18969\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18969</a>)</li>\n<li>جلوگیری از نمایش موارد داخلی که ری اکت نیتیو تحت وب به آن نیازی نداشت. (<a href=\"https://github.com/necolas\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@necolas</a> در <a href=\"https://github.com/facebook/react/pull/18483\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18483</a>)</li>\n<li>اتصال رویداد های معروف  به root زمانی که رندر میشود. (<a href=\"https://github.com/gaearon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@gaearon</a> در <a href=\"https://github.com/facebook/react/pull/19659\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#19659</a>)</li>\n<li>غیرفعال سازی <code class=\"gatsby-code-text\">console</code> در رندر مجدد در حالت DEV. (<a href=\"https://github.com/sebmarkbage\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sebmarkbage</a> در <a href=\"https://github.com/facebook/react/pull/18547\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18547</a>)</li>\n<li>منسوخ شدن موارد ذکر نشده در مستندات و گمراه کننده <code class=\"gatsby-code-text\">ReactTestUtils.SimulateNative</code> API. (<a href=\"https://github.com/gaearon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@gaearon</a> in <a href=\"https://github.com/facebook/react/pull/13407\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#13407</a>)</li>\n<li>تغییر نام فیلد های محافظت شده ی داخلی . (<a href=\"https://github.com/gaearon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@gaearon</a> در <a href=\"https://github.com/facebook/react/pull/18377\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18377</a>)</li>\n<li>User Timing API را در حالت Developing  صدا نزنید   . (<a href=\"https://github.com/gaearon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@gaearon</a> در <a href=\"https://github.com/facebook/react/pull/18417\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18417</a>)</li>\n<li>غیرفعال سازی console وقتی که رندر های متوالی در حالت  Strict Mode اتفاق می افتد  . (<a href=\"https://github.com/sebmarkbage\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sebmarkbage</a> در <a href=\"https://github.com/facebook/react/pull/18547\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18547</a>)</li>\n<li>در حالت Strict Mode, رندر های مجدد کامپوننت بدون hook. (<a href=\"https://github.com/eps1lon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@eps1lon</a> در <a href=\"https://github.com/facebook/react/pull/18430\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18430</a>)</li>\n<li>مجاز به استفاده از <code class=\"gatsby-code-text\">ReactDOM.flushSync</code> در چرخه حیات کامپوننت (اما با نمایش احتیاط ها). (<a href=\"https://github.com/sebmarkbage\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sebmarkbage</a> در <a href=\"https://github.com/facebook/react/pull/18759\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18759</a>)</li>\n<li>اضافه شدن <code class=\"gatsby-code-text\">code</code> ویژگی به رویداد های کیبورد. (<a href=\"https://github.com/bl00mber\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@bl00mber</a> در <a href=\"https://github.com/facebook/react/pull/18287\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18287</a>)</li>\n<li>اضافه شدن <code class=\"gatsby-code-text\">disableRemotePlayback</code>به ویژگی های <code class=\"gatsby-code-text\">video</code> المنت. (<a href=\"https://github.com/tombrowndev\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@tombrowndev</a> در <a href=\"https://github.com/facebook/react/pull/18619\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18619</a>)</li>\n<li>اضافه شدن <code class=\"gatsby-code-text\">enterKeyHint</code>به ویژگی <code class=\"gatsby-code-text\">input</code> المنت. (<a href=\"https://github.com/eps1lon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@eps1lon</a> در <a href=\"https://github.com/facebook/react/pull/18634\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18634</a>)</li>\n<li>نمایش اخطار زمانی که هیچ <code class=\"gatsby-code-text\">مقداری</code> به <code class=\"gatsby-code-text\">&lt;Context.Provider&gt;</code> اختصاص نیابد. (<a href=\"https://github.com/charlie1404\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@charlie1404</a> در <a href=\"https://github.com/facebook/react/pull/19054\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#19054</a>)</li>\n<li>اخطار زمانی که <code class=\"gatsby-code-text\">memo</code> یا <code class=\"gatsby-code-text\">forwardRef</code> <code class=\"gatsby-code-text\">undefined</code> برگرداند. (<a href=\"https://github.com/bvaughn\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@bvaughn</a> در <a href=\"https://github.com/facebook/react/pull/19550\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#19550</a>)</li>\n<li>ارتقا پیام های مربوط به بروزرسانی های غیر مجاز. (<a href=\"https://github.com/JoviDeCroock\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@JoviDeCroock</a> در <a href=\"https://github.com/facebook/react/pull/18316\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18316</a>)</li>\n<li>اسنثنی کردن forwardRef و memo از stack frames. (<a href=\"https://github.com/sebmarkbage\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sebmarkbage</a> در <a href=\"https://github.com/facebook/react/pull/18559\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18559</a>)</li>\n<li>ارتقا پیام های خطا زمانی که بین controlled و uncontrolled inputs سوییچ میکنید. (<a href=\"https://github.com/vcarl\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@vcarl</a> در <a href=\"https://github.com/facebook/react/pull/17070\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#17070</a>)</li>\n<li>جدا سازی <code class=\"gatsby-code-text\">onTouchStart</code>, <code class=\"gatsby-code-text\">onTouchMove</code>, و <code class=\"gatsby-code-text\">onWheel</code> از همدیگر. (<a href=\"https://github.com/gaearon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@gaearon</a> در <a href=\"https://github.com/facebook/react/pull/19654\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#19654</a>)</li>\n<li>برطرف کردن هنگ کردن<code class=\"gatsby-code-text\">setState</code>زمانی که در تگ بسته iframe قرار میگرفت. (<a href=\"https://github.com/gaearon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@gaearon</a> در <a href=\"https://github.com/facebook/react/pull/19220\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#19220</a>)</li>\n<li>برطرف شدن مشکل در رندر کردن کامپوننت های lazy load شده با <code class=\"gatsby-code-text\">defaultProps</code>. (<a href=\"https://github.com/jddxf\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jddxf</a> در <a href=\"https://github.com/facebook/react/pull/18539\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18539</a>)</li>\n<li>برطرف شدن اخطار نا به جای  <code class=\"gatsby-code-text\">dangerouslySetInnerHTML</code> وقتی <code class=\"gatsby-code-text\">undefined</code> است. (<a href=\"https://github.com/eps1lon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@eps1lon</a> در <a href=\"https://github.com/facebook/react/pull/18676\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18676</a>)</li>\n<li>برطرف شدن تست ابزار ها با استفاده نا به جا از <code class=\"gatsby-code-text\">require</code>. (<a href=\"https://github.com/just-boris\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@just-boris</a> در <a href=\"https://github.com/facebook/react/pull/18632\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18632</a>)</li>\n<li>برطرف شدن <code class=\"gatsby-code-text\">onBeforeInput</code> یک اشتباه از <code class=\"gatsby-code-text\">event.type</code> را گزارش میکند. (<a href=\"https://github.com/eps1lon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@eps1lon</a> در <a href=\"https://github.com/facebook/react/pull/19561\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#19561</a>)</li>\n<li>برطرف شدن <code class=\"gatsby-code-text\">event.relatedTarget</code>  <code class=\"gatsby-code-text\">undefined</code> را در فایرفاکس نمایش میدهد. (<a href=\"https://github.com/claytercek\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@claytercek</a> در <a href=\"https://github.com/facebook/react/pull/19607\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#19607</a>)</li>\n<li>برطرف شدن “خطا های نامشخصr” در IE11. (<a href=\"https://github.com/hemakshis\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@hemakshis</a> در <a href=\"https://github.com/facebook/react/pull/19664\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#19664</a>)</li>\n<li>برطرف شدن رندر  در shadow root. (<a href=\"https://github.com/Jack-Works\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@Jack-Works</a> در <a href=\"https://github.com/facebook/react/pull/15894\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#15894</a>)</li>\n<li>برطرف شدن <code class=\"gatsby-code-text\">movementX/Y</code> polyfill توسط رویداد های capture . (<a href=\"https://github.com/gaearon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@gaearon</a> در <a href=\"https://github.com/facebook/react/pull/19672\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#19672</a>)</li>\n<li>استفاده از محول کننده ها برای رویداد های<code class=\"gatsby-code-text\">onSubmit</code> و <code class=\"gatsby-code-text\">onReset</code>. (<a href=\"https://github.com/gaearon\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@gaearon</a> در <a href=\"https://github.com/facebook/react/pull/19333\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#19333</a>)</li>\n<li>ارتقا استفاده از حافظه. (<a href=\"https://github.com/trueadm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@trueadm</a> در <a href=\"https://github.com/facebook/react/pull/18970\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18970</a>)</li>\n</ul>\n<h3 id=\"react-dom-server\"><a href=\"#react-dom-server\" 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>React DOM Server </h3>\n<ul>\n<li><code class=\"gatsby-code-text\">useCallback</code> رفتار سازگار تری دارد با <code class=\"gatsby-code-text\">useMemo</code> برای رندر های سمت سرور. (<a href=\"https://github.com/alexmckenley\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@alexmckenley</a> در <a href=\"https://github.com/facebook/react/pull/18783\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18783</a>)</li>\n<li>برطرف شدن عدم استفاده از state ها زمانی که کامپوننت با خطا مواحه میشد . (<a href=\"https://github.com/pmaccart\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@pmaccart</a> در <a href=\"https://github.com/facebook/react/pull/19212\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#19212</a>)</li>\n</ul>\n<h3 id=\"react-test-renderer\"><a href=\"#react-test-renderer\" 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>React Test Renderer </h3>\n<ul>\n<li>ارتقا پیام خطا برای <code class=\"gatsby-code-text\">findByType</code>. (<a href=\"https://github.com/henryqdineen\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@henryqdineen</a> در <a href=\"https://github.com/facebook/react/pull/17439\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#17439</a>)</li>\n</ul>\n<h3 id=\"concurrent-mode-experimental\"><a href=\"#concurrent-mode-experimental\" 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>Concurrent Mode (Experimental) </h3>\n<ul>\n<li>اصلاح اولویت بندی دسته های heuristics. (<a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> در <a href=\"https://github.com/facebook/react/pull/18796\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18796</a>)</li>\n<li>اضافه شدن پیشوند <code class=\"gatsby-code-text\">unstable_</code>  به قبل از تمامی API های آزمایشی. (<a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> در <a href=\"https://github.com/facebook/react/pull/18825\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18825</a>)</li>\n<li>حذف شدن <code class=\"gatsby-code-text\">unstable_discreteUpdates</code> و <code class=\"gatsby-code-text\">unstable_flushDiscreteUpdates</code>. (<a href=\"https://github.com/trueadm\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@trueadm</a> در <a href=\"https://github.com/facebook/react/pull/18825\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18825</a>)</li>\n<li>حذف شدن آرگومان <code class=\"gatsby-code-text\">timeoutMs</code>. (<a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> در <a href=\"https://github.com/facebook/react/pull/19703\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#19703</a>)</li>\n<li>غیرفعال شدن قابلیت پری رندر در  <code class=\"gatsby-code-text\">&lt;div hidden /&gt;</code>به علت اضافه شدن قابلیت های متفاوت بیشتر به Api در آِینده . (<a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> در <a href=\"https://github.com/facebook/react/pull/18917\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18917</a>)</li>\n<li>اضافه شدن <code class=\"gatsby-code-text\">unstable_expectedLoadTime</code> برای تعلیق درخت پردازش محدود CPU ها. (<a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> در <a href=\"https://github.com/facebook/react/pull/19936\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#19936</a>)</li>\n<li>اضافه شدن hook  آزمایشی <code class=\"gatsby-code-text\">unstable_useOpaqueIdentifier</code> . (<a href=\"https://github.com/lunaruan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@lunaruan</a> در <a href=\"https://github.com/facebook/react/pull/17322\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#17322</a>)</li>\n<li>اضافه شدن <code class=\"gatsby-code-text\">unstable_startTransition</code> API. (<a href=\"https://github.com/rickhanlonii\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@rickhanlonii</a> در <a href=\"https://github.com/facebook/react/pull/19696\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#19696</a>)</li>\n<li>استفاده از <code class=\"gatsby-code-text\">act</code> در رندر آزمایشی دیگر باعث تعلیق و بهم خوردگی fallback ها نمیشود. (<a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> در <a href=\"https://github.com/facebook/react/pull/18596\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18596</a>)</li>\n<li>اضافه شدن زمان مشخصی برای رندر شدن به علت تعلیق CPU. (<a href=\"https://github.com/sebmarkbage\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sebmarkbage</a> در <a href=\"https://github.com/facebook/react/pull/19643\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#19643</a>)</li>\n<li>پاک شدن Root باقی مانده در زمان فراخوانی. (<a href=\"https://github.com/bvaughn\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@bvaughn</a> در <a href=\"https://github.com/facebook/react/pull/18730\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18730</a>)</li>\n<li>برطرف شدن خطای مربوط به error boundaries. (<a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> در <a href=\"https://github.com/facebook/react/pull/18265\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18265</a>)</li>\n<li>رفع مشکل آپدیت هایی که در پردازش های معلق می افتادند. (<a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> در <a href=\"https://github.com/facebook/react/pull/18384\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18384</a> و <a href=\"https://github.com/facebook/react/pull/18457\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18457</a>)</li>\n<li>برطرف شدن مشکلی که در فاز آپدیت باعث میشد رندر ها از کار بیوفتند . (<a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> در <a href=\"https://github.com/facebook/react/pull/18537\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18537</a>)</li>\n<li>برطرف شدن باگ در لیست تعلیق. (<a href=\"https://github.com/sebmarkbage\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sebmarkbage</a> در <a href=\"https://github.com/facebook/react/pull/18412\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18412</a>)</li>\n<li>رفع باگی که باعث میشد که fallback تعلیق کننده زودتر اجرا شود. (<a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> در <a href=\"https://github.com/facebook/react/pull/18411\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18411</a>)</li>\n<li>رفع خطای کلاس کامپوننت هایی که درون لیست تعلیق وجود داشتند. (<a href=\"https://github.com/sebmarkbage\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sebmarkbage</a> در <a href=\"https://github.com/facebook/react/pull/18448\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18448</a>)</li>\n<li>رفع باگ در ورودی هایی که باعث میشدند اپدیت از کار بیوفتد. (<a href=\"https://github.com/jddxf\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jddxf</a> در <a href=\"https://github.com/facebook/react/pull/18515\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18515</a> and <a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> در <a href=\"https://github.com/facebook/react/pull/18535\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18535</a>)</li>\n<li>حل مشکلاتی که باعث میشدند fallback های تعلیق کننده گیر بیوفتند.  (<a href=\"https://github.com/acdlite\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@acdlite</a> در <a href=\"https://github.com/facebook/react/pull/18663\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18663</a>)</li>\n<li>دنباله لیست تعلیق را اگر hydrating می شود قطع نکنید. (<a href=\"https://github.com/sebmarkbage\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sebmarkbage</a> در <a href=\"https://github.com/facebook/react/pull/18854\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18854</a>)</li>\n<li>برطرف شدن باگ <code class=\"gatsby-code-text\">useMutableSource</code>که اتفاق می افتاد زمانی که  <code class=\"gatsby-code-text\">getSnapshot</code> تغییر میکرد. (<a href=\"https://github.com/bvaughn\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@bvaughn</a> در <a href=\"https://github.com/facebook/react/pull/18297\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18297</a>)</li>\n<li>برطرف شدن باگ موجود در <code class=\"gatsby-code-text\">useMutableSource</code>. (<a href=\"https://github.com/bvaughn\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@bvaughn</a> در <a href=\"https://github.com/facebook/react/pull/18912\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18912</a>)</li>\n<li>دریافت اخطار اگر  setstate را حارج از render صدا کنید اما قبل از commit شدنش. (<a href=\"https://github.com/sebmarkbage\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sebmarkbage</a> در <a href=\"https://github.com/facebook/react/pull/18838\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">#18838</a>)</li>\n</ul>","excerpt":"امروز ، نسخه ۱۷ ری اکت را منتشر می‌کنیم! ما درباره منتشر کردن ری‌اکت نسخه ۱۷ و تغییراتی که در آن ایجاد شده‌است به طور مفصل در پست نسخه برگزیده‌ی انتشار (rc…","frontmatter":{"title":"ری اکت نسخه ۱۷.۰.۰","next":null,"prev":null,"author":[{"frontmatter":{"name":"Dan Abramov","url":"https://twitter.com/dan_abramov"}},{"frontmatter":{"name":"Rachel Nabors","url":"https://twitter.com/rachelnabors"}}]},"fields":{"date":"October 20, 2020","path":"content/blog/2020-10-20-react-v17.md","slug":"/blog/2020/10/20/react-v17.html"}},"allMarkdownRemark":{"edges":[{"node":{"frontmatter":{"title":"ری اکت نسخه ۱۷.۰.۰"},"fields":{"slug":"/blog/2020/10/20/react-v17.html"}}},{"node":{"frontmatter":{"title":"Introducing the New JSX Transform"},"fields":{"slug":"/blog/2020/09/22/introducing-the-new-jsx-transform.html"}}},{"node":{"frontmatter":{"title":"React v17.0 Release Candidate: No New Features"},"fields":{"slug":"/blog/2020/08/10/react-v17-rc.html"}}},{"node":{"frontmatter":{"title":"React v16.13.0"},"fields":{"slug":"/blog/2020/02/26/react-v16.13.0.html"}}},{"node":{"frontmatter":{"title":"Building Great User Experiences with Concurrent Mode and Suspense"},"fields":{"slug":"/blog/2019/11/06/building-great-user-experiences-with-concurrent-mode-and-suspense.html"}}},{"node":{"frontmatter":{"title":"Preparing for the Future with React Prereleases"},"fields":{"slug":"/blog/2019/10/22/react-release-channels.html"}}},{"node":{"frontmatter":{"title":"Introducing the New React DevTools"},"fields":{"slug":"/blog/2019/08/15/new-react-devtools.html"}}},{"node":{"frontmatter":{"title":"React v16.9.0 and the Roadmap Update"},"fields":{"slug":"/blog/2019/08/08/react-v16.9.0.html"}}},{"node":{"frontmatter":{"title":"Is React Translated Yet? ¡Sí! Sim! はい！"},"fields":{"slug":"/blog/2019/02/23/is-react-translated-yet.html"}}},{"node":{"frontmatter":{"title":"React v16.8: The One With Hooks"},"fields":{"slug":"/blog/2019/02/06/react-v16.8.0.html"}}}]}},"pageContext":{"slug":"/blog/2020/10/20/react-v17.html"}},"staticQueryHashes":[]}