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: content/docs/hooks-rules.md
+16-16Lines changed: 16 additions & 16 deletions
Original file line number
Diff line number
Diff line change
@@ -8,24 +8,24 @@ prev: hooks-effect.html
8
8
9
9
*Hooki* są nowym dodatkiem w Reakcie 16.8. Pozwalają one używać stanu i innych funkcjonalności Reacta, bez użycia klas.
10
10
11
-
Hooki są javascryptowymi funkcjami, ale musisz pamiętać o dwóch ważnych zasadach, kiedy z nich korzystasz. Stworzyliśmy [wtyczkę do lintera](https://www.npmjs.com/package/eslint-plugin-react-hooks), która automatycznie wymusza stosowanie tych zasad:
11
+
Hooki są javascriptowymi funkcjami, ale podczas korzystania z nich musisz pamiętać o dwóch ważnych zasadach. Stworzyliśmy [wtyczkę do lintera](https://www.npmjs.com/package/eslint-plugin-react-hooks), która automatycznie wymusza stosowanie tych zasad:
12
12
13
13
### Wywołuj hooki tylko z najwyższego poziomu kodu {#only-call-hooks-at-the-top-level}
14
14
15
-
**Nie wywołuj Hooków z wewnątrz pętli, warunków czy zagnieżdżonych funkcji.** Korzystaj z hooków tylko z najwyższego poziomu kodu twoich komponentów funkcyjnych. Przestrzegając tej zasady zyskujesz pewność, że hooki zostaną wywołane w tej samej kolejności, za każdym razem gdy komponent jest renderowany. To właśnie pozwala Reactowi na właściwe przechowywanie stanu pomiędzy kolejnymi wywołaniami `useState` i `useEffect` (Jeśli jesteś ciekawy, dogłębnie wyjaśnimy to[w kolejnym podrozdziale](#explanation).)
15
+
**Nie wywołuj Hooków wewnątrz pętli, instrukcji warunkowych czy zagnieżdżonych funkcji.** Korzystaj z hooków tylko z najwyższego poziomu kodu twoich komponentów funkcyjnych. Przestrzegając tej zasady, zyskujesz pewność, że hooki zostaną wywołane w tej samej kolejności, za każdym razem gdy komponent jest renderowany. To właśnie pozwala Reactowi na właściwe przechowywanie stanu pomiędzy kolejnymi wywołaniami `useState` i `useEffect` (Jeśli ciekawi cię ten temat, dogłębnie wyjaśnimy go[w kolejnym podrozdziale](#explanation).)
16
16
17
-
### Wywołuj Hooki tylko z wewnątrz reactowych komponentów funkcyjnych {#only-call-hooks-from-react-functions}
17
+
### Wywołuj hooki tylko w komponentach funkcyjnych {#only-call-hooks-from-react-functions}
18
18
19
-
**Nie wywołuj hooków z wewnątrz zwykłych javascriptowych funkcji.** Zamiast tego możesz:
19
+
**Nie wywołuj hooków wewnątrz zwykłych javascriptowych funkcji.** Zamiast tego możesz:
20
20
21
-
* ✅ Wywołuj hooki z wewnątrz reactowych komponentów funkcyjnych.
22
-
* ✅ Wywołuj hooki z wewnątrz własnych hooków (więcej o nich dowiemy się [w następnym rozdziale](/docs/hooks-custom.html)).
21
+
* ✅ Wywoływać hooki wewnątrz reactowych komponentów funkcyjnych.
22
+
* ✅ Wywoływać hooki wewnątrz własnych hooków (więcej na ten temat dowiemy się [w następnym rozdziale](/docs/hooks-custom.html)).
23
23
24
24
Przestrzegając tej zasady, upewniasz się, że cała logika związana ze stanem komponentu jest wyraźnie widoczna w jego kodzie źródłowym.
25
25
26
-
## Wtyczka ESLint {#eslint-plugin}
26
+
## Wtyczka dla ESLinta {#eslint-plugin}
27
27
28
-
Wydaliśmy wtyczkę do EsLint o nazwie [`eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks), która wymusza stosowanie tych dwóch zasad. Jeśli chcesz ją wypróbować, możesz dodać ją do swojego projektu:
28
+
Wydaliśmy wtyczkę dla ESLinta o nazwie [`eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks), która wymusza stosowanie tych dwóch zasad. Jeśli chcesz ją wypróbować, możesz dodać ją do swojego projektu w następujący sposób:
W przyszłości zamierzamy dołączyć te wtyczkę do Create React App i podobnych narzędzi.
50
50
51
-
**Możesz teraz przejść do następnego rozdziału, gdzie wyjaśniamy [jak pisać własne hooki](/docs/hooks-custom.html).** W tym rozdziale postaramy się uzasadnić, dlaczego narzucamy takie zasady.
51
+
**Możesz teraz przejść do następnego rozdziału, gdzie wyjaśniamy,[jak pisać własne hooki](/docs/hooks-custom.html).** W tym rozdziale postaramy się uzasadnić, dlaczego narzucamy takie zasady.
52
52
53
53
## Wyjaśnienie {#explanation}
54
54
55
-
Jak [dowiedzieliśmy się wcześniej](/docs/hooks-state.html#tip-using-multiple-state-variables)możemy używać wielu hooków stanu i efektów w jednym komponencie:
55
+
Jak [dowiedzieliśmy się wcześniej](/docs/hooks-state.html#tip-using-multiple-state-variables), w ramach pojedynczego komponentu możemy używać wielu hooków stanu i efektów:
56
56
57
57
```js
58
58
functionForm() {
@@ -76,15 +76,15 @@ function Form() {
76
76
}
77
77
```
78
78
79
-
Skąd zatem React wie, jaką wartość stanu zwrócić, przy kolejnych wywołaniach funkcji `useState`? Tajemnica tkwi w tym, że **React polega na kolejności, w jakiej hooki zostały wywołane.** Nasz przykład zadziała ponieważ kolejność wywoływania hooków jest taka sama przy każdym renderze:
79
+
Skąd zatem React wie, jaką wartość stanu zwrócić przy kolejnych wywołaniach funkcji `useState`? Tajemnica tkwi w tym, że **React polega na kolejności, w jakiej hooki są wywoływane.** Nasz przykład zadziała, ponieważ kolejność wywoływania hooków jest taka sama przy każdym renderowaniu:
80
80
81
81
```js
82
82
// ------------
83
83
// Pierwsze renderowanie
84
84
// ------------
85
-
useState('Mary') // 1. Zaincializuj zmienną stanu imienia wartością „Mary”
85
+
useState('Mary') // 1. Zainicjalizuj zmienną stanu imienia wartością „Mary”
86
86
useEffect(persistForm) // 2. Dodaj efekt odpowiedzialny za przechowywanie danych formularza
87
-
useState('Poppins') // 3. Zaincializuj zmienną stanu nazwiska wartością „Poppins”
87
+
useState('Poppins') // 3. Zainicjalizuj zmienną stanu nazwiska wartością „Poppins”
88
88
useEffect(updateTitle) // 4. Dodaj efekt odpowiedzialny za aktualizację tytułu
89
89
90
90
// -------------
@@ -98,7 +98,7 @@ useEffect(updateTitle) // 4. Zastąp efekt odpowiedzialny za aktualizację t
98
98
// ...
99
99
```
100
100
101
-
Tak długo, jak kolejność wywoływania hooków pozostaje taka sama pomiędzy kolejnymi renderami, React może powiązać lokalny stan z każdym z nich. A co wydarzy się, jeśli umieścimy wywołanie hooka (na przykład efektu `persistForm`) wewnątrz instrukcji warunkowej?
101
+
Tak długo, jak kolejność wywoływania hooków pozostaje taka sama pomiędzy kolejnymi renderowaniami, React może powiązać lokalny stan z każdym z nich. A co wydarzy się, jeśli umieścimy wywołanie hooka (na przykład efektu `persistForm`) wewnątrz instrukcji warunkowej?
102
102
103
103
```js
104
104
// 🔴 Łamiemy pierwszą zasadę, używając hooka wewnątrz instrukcji warunkowej
@@ -118,7 +118,7 @@ useState('Poppins') // 🔴 2 (a był 3). Nie uda się odczytać zmiennej
118
118
useEffect(updateTitle) // 🔴 3 (a był 4). Nie uda się zastąpić efektu
119
119
```
120
120
121
-
React nie wiedziałby co zwrócić, dla drugiego wywołania hooka `useState`. React spodziewał się, że drugie wywołanie hooka w tym komponencie, będzie odpowiadało wywołaniu efektu `persistForm`, tak jak podczas poprzedniego renderowania. Nie jest to już jednak prawdą. Od tej chwili każde kolejne wywołanie hooka, po tym, jak jeden został pominięty, również przesunęłoby się o jeden, prowadząc do błędów.
121
+
React nie wiedziałby, co zwrócić dla drugiego wywołania hooka `useState`. React spodziewał się, że drugie wywołanie hooka w tym komponencie będzie odpowiadało wywołaniu efektu `persistForm`, tak jak podczas poprzedniego renderowania. Nie jest to już jednak prawdą. Od tej chwili każde kolejne wywołanie hooka, po tym, jak jeden został pominięty, również przesunęłoby się o jeden, prowadząc do błędów.
122
122
123
123
**Dlatego właśnie hooki muszą być wywoływane z najwyższego poziomu kodu komponentów.** Jeśli chcesz, żeby efekt działał pod jakimś warunkiem, możesz umieścić ten warunek *wewnątrz* hooka:
124
124
@@ -131,7 +131,7 @@ React nie wiedziałby co zwrócić, dla drugiego wywołania hooka `useState`. Re
131
131
});
132
132
```
133
133
134
-
**Zauważ że nie musisz się tym przejmować, jeśli użyjesz [dostarczonej przez nas reguły lintera](https://www.npmjs.com/package/eslint-plugin-react-hooks).** Teraz jednak wiesz także *dlaczego* hooki działają w ten sposób i jakim problemom zapobiega stosowanie tej reguły.
134
+
**Zauważ, że nie musisz o tym pamiętać, jeśli użyjesz [dostarczonej przez nas reguły lintera](https://www.npmjs.com/package/eslint-plugin-react-hooks).** Teraz jednak wiesz także,*dlaczego* hooki działają w ten sposób i jakim problemom zapobiega stosowanie tej reguły.
0 commit comments