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
Copy file name to clipboardExpand all lines: src/content/learn/responding-to-events.md
+13-13Lines changed: 13 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,7 +18,7 @@ React дазваляе дадаваць *апрацоўшчыкі падзей*
18
18
19
19
## Дадаванне апрацоўшчыкаў падзей {/*adding-event-handlers*/}
20
20
21
-
Каб дадаць апрацоўшчык падзеі, спачатку трэба вызначыце функцыю, а потым [перадаць яе ў якасці пропса](/learn/passing-props-to-a-component) ў адпаведны JSX тэг. Напрыклад, вось кнопка, якая пакуль нічога не робіць:
21
+
Каб дадаць апрацоўшчык падзеі, спачатку трэба вызначыць функцыю, а потым [перадаць яе ў якасці пропса](/learn/passing-props-to-a-component) ў адпаведны JSX тэг. Напрыклад, вось кнопка, якая пакуль нічога не робіць:
22
22
23
23
<Sandpack>
24
24
@@ -91,7 +91,7 @@ button { margin-right: 10px; }
91
91
92
92
Функцыі, якія перадаюцца ў апрацоўшчыкі падзей, павінны перадавацца, а не выклікацца. Напрыклад:
93
93
94
-
| перадача функцыі (правільна) | выклік функцыі (няправільны) |
94
+
| перадача функцыі (правільна) | выклік функцыі (няправільна) |
Калі мы перададзім убудаваны код наступным чынам, то ён не будзе выкананы пры націску кнопкі — ён будзе выконвацца пры кожным рэндэрынгу кампанента:
108
+
Калі мы перададзім убудаваны код наступным чынам, то ён не будзе выкананы пры націсканні кнопкі — ён будзе выконвацца пры кожным рэндэрынгу кампанента:
109
109
110
110
```jsx
111
-
// Гэта паведамленне з'яўляецца пры рэндэрынгу кампанента, а не пры націску кнопкі!
111
+
// Гэта паведамленне з'яўляецца пры рэндэрынгу кампанента, а не пры націсканні кнопкі!
-`PlayButton` перадае `handlePlayClick` у якасці пропса `onClick` у кампанент `Button`.
225
225
-`UploadButton` перадае `() => alert('Запампоўваецца!')` у якасці пропса `onClick` у кампанент `Button`.
226
226
227
-
Нарэшце, ваш кампанент `Button` прымае пропс пад назвай `onClick`. Ён перадае гэты пропс непасрэдна ва ўбудаваны браўзерны кампанент `<button>` з дапамогай `onClick={onClick}`. Гэта загадвае React выклікаць перададзеную функцыю пры націску.
227
+
Нарэшце, ваш кампанент `Button` прымае пропс пад назвай `onClick`. Ён перадае гэты пропс непасрэдна ва ўбудаваны браўзерны кампанент `<button>` з дапамогай `onClick={onClick}`. Гэта загадвае React выклікаць перададзеную функцыю пры націсканні.
228
228
229
229
Калі вы выкарыстоўваеце [дызайн-сістэму](https://uxdesign.cc/everything-you-need-to-know-about-design-systems-54b109851969), то звычайна такія кампаненты, як кнопкі, змяшчаюць стылі, але не вызначаюць паводзіны. Замест гэтага кампаненты, як `PlayButton` і `UploadButton`, будуць перадаваць апрацоўшчыкі падзей уніз па іерархіі.
230
230
@@ -423,7 +423,7 @@ button { margin: 5px; }
423
423
424
424
#### Перахопліванне падзей {/*capture-phase-events*/}
425
425
426
-
У рэдкіх выпадках вам можа спатрэбіцца перахапіць усе падзеі на даччыных элементах, *нават калі яны спынілі распаўсюджванне*. Напрыклад, магчыма, вы хочаце зарэгістраваць кожны націск мышы ў аналітыцы, незалежна ад логікі распаўсюджвання. Для гэтага можна дадаць `Capture` у канец назвы падзеі:
426
+
У рэдкіх выпадках вам можа спатрэбіцца перахапіць усе падзеі на даччыных элементах, *нават калі яны спынілі распаўсюджванне*. Напрыклад, магчыма, вы хочаце зарэгістраваць кожнае націсканне мышы ў аналітыцы, незалежна ад логікі распаўсюджвання. Для гэтага можна дадаць `Capture` у канец назвы падзеі:
427
427
428
428
```js
429
429
<div onClickCapture={() => { /* гэта адбываецца ў першую чаргу */ }}>
@@ -519,7 +519,7 @@ button { margin-left: 5px; }
519
519
520
520
Вядома! Апрацоўшчыкі падзей — гэта лепшае месца для пабочных эфектаў.
521
521
522
-
У адрозненне ад функцый рэндэрынгу, апрацоўшчыкі падзей не павінны быць [чыстымі функцыямі](/learn/keeping-components-pure), таму гэта выдатнае месца, каб *змяніць* што-небудзь — напрыклад, змяніць значэнне ўводу ў адказ на набор тэксту або змяніць спіс у адказ на націск кнопкі. Аднак, каб змяніць нейкую інфармацыю, спачатку яе трэба неяк захаваць. У React для гэтага выкарыстоўваецца [стан — памяць кампанента.](/learn/state-a-components-memory) Пра ўсё гэта вы даведаецеся на наступнай старонцы.
522
+
У адрозненне ад функцый рэндэрынгу, апрацоўшчыкі падзей не павінны быць [чыстымі функцыямі](/learn/keeping-components-pure), таму гэта выдатнае месца, каб *змяніць* што-небудзь — напрыклад, змяніць значэнне ўводу ў адказ на набор тэксту або змяніць спіс у адказ на націсканне кнопкі. Аднак, каб змяніць нейкую інфармацыю, спачатку яе трэба неяк захаваць. У React для гэтага выкарыстоўваецца [стан — памяць кампанента.](/learn/state-a-components-memory) Пра ўсё гэта вы даведаецеся на наступнай старонцы.
523
523
524
524
<Recap>
525
525
@@ -622,9 +622,9 @@ export default function LightSwitch() {
622
622
623
623
#### Падключыце апрацоўшчыкі падзей {/*wire-up-the-events*/}
624
624
625
-
Кампанент `ColorSwitch` адлюстроўвае кнопку, якая павінна змяняць колер старонкі. Падключыце кнопку да апрацоўшчыка падзей `onChangeColor`, які кампанент атрымлівае ад бацькоўскага кампанента ў якасці пропса, такім чынам, каб націск на кнопку змяніў колер старонкі.
625
+
Кампанент `ColorSwitch` адлюстроўвае кнопку, якая павінна змяняць колер старонкі. Падключыце кнопку да апрацоўшчыка падзей `onChangeColor`, які кампанент атрымлівае ад бацькоўскага кампанента ў якасці пропса, такім чынам, каб націсканне на кнопку змяніла колер старонкі.
626
626
627
-
Пасля таго, як вы гэта зробіце, звярніце ўвагу, што націсканне кнопкі таксама павялічвае лічыльнік націскаў на старонцы. Ваш калега, які напісаў бацькоўскі кампанент, настойвае на тым, што `onChangeColor` не павялічвае ніякіх лічыльнікаў. Што яшчэ можа адбывацца? Выправіце гэта так, каб націск на кнопку *толькі*змяняў колер, а _не_павялічваў лічыльнік.
627
+
Пасля таго, як вы гэта зробіце, звярніце ўвагу, што націсканне кнопкі таксама павялічвае лічыльнік націсканняў на старонцы. Ваш калега, які напісаў бацькоўскі кампанент, настойвае на тым, што `onChangeColor` не павялічвае ніякіх лічыльнікаў. Што яшчэ можа адбывацца? Выправіце гэта так, каб націсканне на кнопку *толькі*змяняла колер, а _не_павялічвала лічыльнік.
628
628
629
629
<Sandpack>
630
630
@@ -668,7 +668,7 @@ export default function App() {
668
668
<ColorSwitch onChangeColor={handleChangeColor} />
669
669
<br />
670
670
<br />
671
-
<h2>Колькасць націскаў: {clicks}</h2>
671
+
<h2>Колькасць націсканняў: {clicks}</h2>
672
672
</div>
673
673
);
674
674
}
@@ -680,7 +680,7 @@ export default function App() {
680
680
681
681
Спачатку трэба дадаць апрацоўшчык падзеі, напрыклад, так: `<button onClick={onChangeColor}>`.
682
682
683
-
Аднак пры гэтым узнікае праблема з павелічэннем лічыльніка пры націску на кнопку. Калі `onChangeColor`, як кажа ваш калега, не робіць гэтага, тады праблема заключаецца ў тым, што гэтая падзея распаўсюджваецца, «ўсплывае» ўверх, і нейкі апрацоўшчык падзей вышэй змяняе лічыльнік. Каб вырашыць гэтую праблему, трэба спыніць распаўсюджванне падзеі. Але не забывайце, што вы ўсё роўна павінны выклікаць `onChangeColor`.
683
+
Аднак пры гэтым узнікае праблема з павелічэннем лічыльніка пры націсканні на кнопку. Калі `onChangeColor`, як кажа ваш калега, не робіць гэтага, тады праблема заключаецца ў тым, што гэтая падзея распаўсюджваецца, «ўсплывае» ўверх, і нейкі апрацоўшчык падзей вышэй змяняе лічыльнік. Каб вырашыць гэтую праблему, трэба спыніць распаўсюджванне падзеі. Але не забывайце, што вы ўсё роўна павінны выклікаць `onChangeColor`.
684
684
685
685
<Sandpack>
686
686
@@ -727,7 +727,7 @@ export default function App() {
0 commit comments