Skip to content

Commit 1397d4e

Browse files
jakubdrozdekg12i
andauthored
Apply suggestions from code review
Co-Authored-By: g12i <grzebieniowski@gmail.com>
1 parent 20a7e0f commit 1397d4e

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

content/docs/hooks-rules.md

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,24 @@ prev: hooks-effect.html
88

99
*Hooki* są nowym dodatkiem w Reakcie 16.8. Pozwalają one używać stanu i innych funkcjonalności Reacta, bez użycia klas.
1010

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:
1212

1313
### Wywołuj hooki tylko z najwyższego poziomu kodu {#only-call-hooks-at-the-top-level}
1414

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).)
1616

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}
1818

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:
2020

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)).
2323

2424
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.
2525

26-
## Wtyczka ESLint {#eslint-plugin}
26+
## Wtyczka dla ESLinta {#eslint-plugin}
2727

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:
2929

3030
```bash
3131
npm install eslint-plugin-react-hooks
@@ -48,11 +48,11 @@ npm install eslint-plugin-react-hooks
4848

4949
W przyszłości zamierzamy dołączyć te wtyczkę do Create React App i podobnych narzędzi.
5050

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.
5252

5353
## Wyjaśnienie {#explanation}
5454

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:
5656

5757
```js
5858
function Form() {
@@ -76,15 +76,15 @@ function Form() {
7676
}
7777
```
7878

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:
8080

8181
```js
8282
// ------------
8383
// Pierwsze renderowanie
8484
// ------------
85-
useState('Mary') // 1. Zaincializuj zmienną stanu imienia wartością „Mary”
85+
useState('Mary') // 1. Zainicjalizuj zmienną stanu imienia wartością „Mary”
8686
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”
8888
useEffect(updateTitle) // 4. Dodaj efekt odpowiedzialny za aktualizację tytułu
8989

9090
// -------------
@@ -98,7 +98,7 @@ useEffect(updateTitle) // 4. Zastąp efekt odpowiedzialny za aktualizację t
9898
// ...
9999
```
100100

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?
102102

103103
```js
104104
// 🔴 Ł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
118118
useEffect(updateTitle) // 🔴 3 (a był 4). Nie uda się zastąpić efektu
119119
```
120120

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.
122122

123123
**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:
124124

@@ -131,7 +131,7 @@ React nie wiedziałby co zwrócić, dla drugiego wywołania hooka `useState`. Re
131131
});
132132
```
133133

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.
135135

136136
## Kolejne kroki {#next-steps}
137137

0 commit comments

Comments
 (0)