You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Згодна з пагадненнем, гэту пару прынята называць як `const [something, setSomething]`. Вы можаце называць гэту пару як хочаце, але пагадненні палягчаюць разуменне розных праектаў.
359
+
У адпаведнасці з пагадненнем, гэту пару прынята называць як `const [something, setSomething]`. Вы можаце называць гэту пару як хочаце, але пагадненні палягчаюць разуменне розных праектаў.
360
360
361
361
</Note>
362
362
@@ -527,9 +527,9 @@ button {
527
527
528
528
Магчыма, вы заўважылі, што выклік `useState` не атрымлівае ніякай інфармацыі аб тым, *на якую* пераменную стану ён спасылаецца. Няма «ідэнтыфікатара», які перадаецца ў `useState`, дык як ён ведае, якую з пераменных стану вярнуць? Ён выкарыстоўвае нейкую магію, накшталт разбору вашых функцый? Адказ — не.
529
529
530
-
Замест гэтага, каб забяспечыць іх лаканічны сінтаксіс, хукі **разлічваюць на стабільны парадак выклікаў на кожным рэндэры аднаго і таго ж кампанента.** Гэта добра працуе на практыцы, таму што калі вы будзеце прытрымлівацца правіла вышэй («выклікайце хукі толькі на верхнім узроўні»), хукі заўсёды будуць выклікацца ў адным і тым жа парадку. Акрамя таго, [убудова linter](https://www.npmjs.com/package/eslint-plugin-react-hooks) дазваляе выявіць большасць памылак.
530
+
Замест гэтага, каб забяспечыць іх лаканічны сінтаксіс, хукі **разлічваюць на стабільны парадак выклікаў на кожным рэндэры аднаго і таго ж кампанента.** Гэта добра працуе на практыцы, таму што калі вы будзеце прытрымлівацца правіла вышэй («выклікайце хукі толькі на верхнім узроўні»), хукі заўсёды будуць выклікацца ў адным і тым жа парадку. Акрамя таго, [убудова для лінтара](https://www.npmjs.com/package/eslint-plugin-react-hooks) дазваляе выявіць большасць памылак.
531
531
532
-
Пад капотам React захоўвае масіў пар станаў для кожнага кампанента. Ён таксама падтрымлівае бягучы індэкс пары, якому перад рэндэрам задаецца значэнне `0`. Кожны раз, калі вы выклікаеце `useState`, React дае вам наступную пару станаў і павялічвае індэкс. Больш даведацца аб гэтым механізме вы можаце ў артыкуле «[Хукі ў React: не магія, а проста масівы (React Hooks: Not Magic, Just Arrays)](https://medium.com/@ryardley/react-hooks-not-magic-just-arrays-cd4f1857236e)».
532
+
Пад капотам React захоўвае масіў пар станаў для кожнага кампанента. Ён таксама падтрымлівае бягучы індэкс пары, якому перад рэндэрам задаецца значэнне `0`. Кожны раз, калі вы выклікаеце `useState`, React дае вам наступную пару станаў і павялічвае індэкс. Больш даведацца аб гэтым механізме вы можаце ў артыкуле «[ReactHooks: Not Magic, Just Arrays](https://medium.com/@ryardley/react-hooks-not-magic-just-arrays-cd4f1857236e)» (Хукі ў React: не магія, а проста масівы).
533
533
534
534
У гэтым прыкладзе **не выкарыстоўваецца React**, але ён дае вам уяўленне аб тым, як `useState` працуе ўнутры:
535
535
@@ -892,13 +892,13 @@ button {
892
892
893
893
Гэта тое, што адрознівае стан ад звычайных пераменных, якія вы можаце аб'явіць у верхняй частцы вашага модуля. Стан не прывязаны да пэўнага выкліку функцыі або месца ў кодзе, ён «лакальны» для пэўнага месца на экране. Вы адрэндэрылі два кампаненты `<Gallery />`, таму іх стан захоўваецца асобна.
894
894
895
-
Таксама звярніце ўвагу на тое, што кампанент `Page` нічога не «ведае» пра стан кампанента `Gallery` і нават пра тое, ці ёсць ён у яго наогул. У адрозненне ад пропсаў, **стан з'яўляецца цалкам прыватным для кампанента, які яго аб'яўляе.** Бацькоўскі кампанент не можа змяніць яго. Дзякуючы гэтаму дадаванне стану да любога кампанента або яго выдаленне, не ўплывае на астатнія кампаненты.
895
+
Таксама звярніце ўвагу на тое, што кампанент `Page` нічога не «ведае» пра стан кампанента `Gallery` і нават пра тое, ці ёсць ён у яго наогул. У адрозненне ад пропсаў, **стан з'яўляецца цалкам прыватным для кампанента, які яго аб'яўляе.** Бацькоўскі кампанент не можа змяніць яго. Дзякуючы гэтаму, дадаванне стану да любога кампанента або яго выдаленне не ўплывае на астатнія кампаненты.
896
896
897
-
Што рабіць, калі вы хочаце, каб абедзве галерэі сінхранізавалі свае станы? Правільны спосаб зрабіць гэта ў React — гэта *выдаліць* стан з даччыных кампанентаў і дадаць яго да іх бліжэйшага агульнага бацькоўскага кампанента. Наступныя некалькі старонак будуць прысвечаны арганізацыі стану аднаго кампанента, але мы вернемся да гэтай тэмы ў раздзеле [Сумеснае выкарыстанне стану кампанентамі.](/learn/sharing-state-between-components)
897
+
Што рабіць, калі вы хочаце, каб абедзве галерэі сінхранізавалі свае станы? Правільны спосаб зрабіць гэта ў React — гэта *выдаліць* стан з даччыных кампанентаў і дадаць яго да іх найбліжэйшага агульнага бацькоўскага кампанента. Наступныя некалькі старонак будуць прысвечаны арганізацыі стану аднаго кампанента, але мы вернемся да гэтай тэмы на старонцы «[Сумеснае выкарыстанне стану кампанентамі.](/learn/sharing-state-between-components)»
898
898
899
899
<Recap>
900
900
901
-
* Выкарыстоўвайце пераменную стану, калі кампаненту трэба «запомніць» некаторую інфармацыю паміж рэндэрамі.
901
+
* Выкарыстоўвайце пераменную стану калі кампаненту трэба «запомніць» некаторую інфармацыю паміж рэндэрамі.
902
902
* Пераменныя стану аб'яўляюцца з дапамогай выкліку хука `useState`.
903
903
* Хукі — гэта спецыяльныя функцыі, якія пачынаюцца з `use`. Яны дазваляюць падключацца («hook into») да функцый React, такіх як стан.
904
904
* Хукі могуць нагадваць імпарт: яны павінны выклікацца безумоўна. Выклік хукаў, у тым ліку `useState`, дзейнічае толькі на верхнім узроўні кампанента або іншага хука.
Звярніце ўвагу, як функцыі`hasPrev` і `hasNext` выкарыстоўваюцца *адначасова* і ў JSX і ўнутры апрацоўшчыка падзей! Гэты зручны шаблон працуе, таму што функцыі апрацоўшчыкаў падзей [«замыкаюць»](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures) любыя пераменныя, аб'яўленыя падчас рэндэру.
1221
+
Звярніце ўвагу, як пераменныя`hasPrev` і `hasNext` выкарыстоўваюцца *адначасова* і ў JSX і ўнутры апрацоўшчыка падзей! Гэты зручны шаблон працуе таму, што функцыі апрацоўшчыкаў падзей [«замыкаюць»](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures) любыя пераменныя, аб'яўленыя падчас рэндэру.
1222
1222
1223
1223
</Solution>
1224
1224
@@ -1273,7 +1273,7 @@ h1 { margin-top: 10px; }
1273
1273
1274
1274
<Solution>
1275
1275
1276
-
Спачатку імпартуйце `useState` з React. Затым заменіце`firstName` і `lastName` пераменнымі стану, аб'яўленымі праз выклік `useState`. Нарэшце, заменіце кожнае прызначэнне `firstName = ...` на `setFirstName(...)` і зрабіце тое ж самае для `lastName`. Не забудзьце таксама абнавіць функцыю `handleReset`, каб кнопка скіду таксама працавала.
1276
+
Спачатку імпартуйце `useState` з React. Затым замяніце`firstName` і `lastName` пераменнымі стану, аб'яўленымі праз выклік `useState`. Нарэшце, замяніце кожнае прызначэнне `firstName = ...` на `setFirstName(...)` і зрабіце тое ж самае для `lastName`. Не забудзьце таксама абнавіць функцыю `handleReset`, каб кнопка скіду таксама працавала.
1277
1277
1278
1278
<Sandpack>
1279
1279
@@ -1451,11 +1451,11 @@ export default function FeedbackForm() {
1451
1451
1452
1452
#### Выдаліце непатрэбны стан {/*remove-unnecessary-state*/}
1453
1453
1454
-
Пры націсканні на кнопку праграма павінна запытаць імя карыстальніка, а затым адлюстроўваць прывітанне. Вы спрабавалі выкарыстоўваць стан, каб захаваць імя, але па нейкай прычыне заўсёды паказваецца «Вітаю, !».
1454
+
Пры націсканні на кнопку, праграма павінна запытаць імя карыстальніка, а затым адлюстроўваць прывітанне. Вы спрабавалі выкарыстоўваць стан, каб захаваць імя, але па нейкай прычыне заўсёды паказваецца «Вітаю, !».
1455
1455
1456
1456
Каб выправіць гэты код, выдаліце непатрэбную пераменную стану. (Мы абмяркуем [чаму гэта не спрацавала](/learn/state-as-a-snapshot) пазней.)
1457
1457
1458
-
Ці можаце растлумачыць, чаму гэтая пераменная стану была не патрэбна?
1458
+
Ці можаце растлумачыць, чаму гэтая пераменная стану не была патрэбна?
0 commit comments