Skip to content

Commit 9fbfc55

Browse files
Apply suggestions from code review
Co-Authored-By: Jakub Drozdek <[email protected]>
1 parent 57a8443 commit 9fbfc55

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

content/docs/hooks-faq.md

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -544,7 +544,7 @@ function Example({ someProp }) {
544544
}
545545
```
546546

547-
Trudno jest pamiętać, które właściwości lub stan są używane przez funkcje poza efektem. Dlatego też, **zazwyczaj będziesz deklarować funkcje *wewnątrz* efektu.** Dzięki temu, łatwo można zauważyć, od których wartości komponentu zależy efekt:
547+
Trudno jest pamiętać, które właściwości lub stan są używane przez funkcje poza efektem. Dlatego też **zazwyczaj lepiej jest deklarować funkcje *wewnątrz* efektu.** Dzięki temu łatwo można zauważyć, od których wartości komponentu zależy efekt:
548548

549549
```js{4,8}
550550
function Example({ someProp }) {
@@ -558,7 +558,7 @@ function Example({ someProp }) {
558558
}
559559
```
560560

561-
Jeżeli po zmianach, efekt nadal nie używa wartości z zakresu komponentu, można bezpiecznie użyć `[]`:
561+
Jeżeli po zmianach efekt nadal nie używa wartości z zakresu komponentu, można bezpiecznie użyć `[]`:
562562

563563
```js{7}
564564
useEffect(() => {
@@ -570,17 +570,17 @@ useEffect(() => {
570570
}, []); // ✅ OK, ponieważ *żadne* wartości z zakresu komponentu nie są używane wewnątrz efektu
571571
```
572572

573-
W zależności od przypadku użycia, poniżej opisanych jest także kilka dodatkowych opcji.
573+
W zależności od przypadku użycia, istnieje kilka dodatkowych opcji, które opisaliśmy poniżej.
574574

575575
>Uwaga
576576
>
577-
>Stworzyliśmy regułe [`wyczerpującą-zależności`](https://github.com/facebook/react/issues/14920), jest ona częścią pakietu [`eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks#installation). Pomaga w znalezniu komponentów, które nie obsługują aktualizacji w konsekwentny sposób.
577+
>Stworzyliśmy regułę [`exhaustive-deps`](https://github.com/facebook/react/issues/14920) (pol. *wyczerpujące zależności*), będącą częścią pakietu [`eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks#installation). Pomaga w znalezieniu komponentów, które nie obsługują aktualizacji w konsekwentny sposób.
578578
579579
Spójrzmy, dlaczego ma to znaczenie.
580580

581-
Podczas gdy określasz [tablicę zależności](/docs/hooks-reference.html#conditionally-firing-an-effect), ostatni argument dla `useEffect`, `useMemo`, `useCallback`, lub `useImperativeHandle`, powinien zawierać wszystkie wartości, biorące udział w przepływie danych Reacta. Włączając w to właściwości, stan i wszystkie ich pochodne.
581+
Kiedy określasz [tablicę zależności](/docs/hooks-reference.html#conditionally-firing-an-effect), ostatni argument dla `useEffect`, `useMemo`, `useCallback`, lub `useImperativeHandle` powinien zawierać wszystkie wartości biorące udział w przepływie danych Reacta. Włączając w to właściwości, stan i wszystkie ich pochodne.
582582

583-
Jedynym **bezpiecznym** przypadkiem pominięcia argumentu w tablicy zależności jest, przekazanie funkcji, która w swoim wnętrzu nie ma odniesień do właściwości, stanu lub wartości z nich dziedziczących. Poniższy przykład zawiera błąd:
583+
Jedynym **bezpiecznym** przypadkiem pominięcia argumentu w tablicy zależności jest przekazanie funkcji, która w swoim wnętrzu nie ma odniesień do właściwości, stanu lub wartości z nich dziedziczących. Poniższy przykład zawiera błąd:
584584

585585
```js{5,12}
586586
function ProductPage({ productId }) {
@@ -594,12 +594,12 @@ function ProductPage({ productId }) {
594594
595595
useEffect(() => {
596596
fetchProduct();
597-
}, []); // 🔴 Błąd ponieważ `fetchProduct` używa `productId`
597+
}, []); // 🔴 Błąd, ponieważ `fetchProduct` używa `productId`
598598
// ...
599599
}
600600
```
601601

602-
**Zalecanym sposobem naprawienia tego, jest przeniesienie funkcji do _wnętrzna_ efektu**. Dzięki temu łatwo możemy dostrzec, stan lub właściwości jakich używa efekt, możemy się wtedy upewnić że wszystkie z nich zostały zadeklarowane:
602+
**Zalecanym sposobem naprawienia tego, jest przeniesienie funkcji do _wnętrzna_ efektu**. Dzięki temu łatwo możemy dostrzec stan lub właściwości, których używa efekt i upewnić się, że wszystkie z nich zostały zadeklarowane:
603603

604604
```js{5-10,13}
605605
function ProductPage({ productId }) {
@@ -614,12 +614,12 @@ function ProductPage({ productId }) {
614614
}
615615
616616
fetchProduct();
617-
}, [productId]); // ✅ Poprawnie, ponieważ efekt używa wyłacznie productId
617+
}, [productId]); // ✅ Poprawnie, ponieważ efekt używa wyłącznie productId
618618
// ...
619619
}
620620
```
621621

622-
Pozwala to również na zapobieganie, niepoprawnym odpowiedziom, stosując zmienną lokalną wewnątrz efektu:
622+
Pozwala to również na obsłużenie asynchronicznych odpowiedzi stosując zmienną lokalną wewnątrz efektu:
623623

624624
```js{2,6,10}
625625
useEffect(() => {
@@ -639,17 +639,17 @@ Przenieśliśmy funkcję do wnętrza efektu, dlatego też nie musi się znajdowa
639639

640640
>Wskazówka
641641
>
642-
>Aby dowiedzieć się więcej o pobieraniu danych za pomocą Hooków, sprawdź [ten przykład](https://codesandbox.io/s/jvvkoo8pq3) i [ten artykuł](https://www.robinwieruch.de/react-hooks-fetch-data/).
642+
>Aby dowiedzieć się więcej o pobieraniu danych za pomocą hooków, sprawdź [ten przykład](https://codesandbox.io/s/jvvkoo8pq3) i [ten artykuł](https://www.robinwieruch.de/react-hooks-fetch-data/).
643643
644-
**Jeżeli z jakichś przyczyn, _nie_ możesz przenieść funkcji do wnętrza efektu, istnieje kilka innych opcji:**
644+
**Jeżeli z jakichś przyczyn _nie_ możesz przenieść funkcji do wnętrza efektu, istnieje kilka innych opcji:**
645645

646-
* **Możesz spróbować przenieść funkcję, poza swój komponent**. W tym przypadku, funkcja nie będzie odnosić się do żadnych właściwości czy stanu, dlatego też nie będzie potrzeby dodawania jej do tablicy zależności.
647-
* Jeżeli funkcja, którą wywołujesz, jest dotyczy czystych kalkulacji i można ją bezpiecznie wywołać podczas renderowania, możesz chcieć **wywołąć ją poza efektem i** uzależnić efekt od zwróconej przez nią wartości.
646+
* **Możesz spróbować przenieść funkcję poza swój komponent**. W tym przypadku, funkcja nie będzie odnosić się do żadnych właściwości czy stanu, dlatego też nie będzie potrzeby dodawania jej do tablicy zależności.
647+
* Jeżeli funkcja, którą wywołujesz, wykonuje jedynie obliczenia i można ją bezpiecznie wywołać podczas renderowania, możesz zechcieć **wywołać ją poza efektem ** i uzależnić efekt od zwróconej przez nią wartości.
648648
* W ostateczności, możesz **dodać funkcję do zależności efektu poprzez _opakowanie jej definicji_**, korzystając z hooka [`useCallback`](/docs/hooks-reference.html#usecallback). Zapewnia to niezmienność podczas renderowania, dopóki nie zmieni się również *jej własna* tablica zależności:
649649

650650
```js{2-5}
651651
function ProductPage({ productId }) {
652-
// ✅ Opakowanie za pomocą useCallback, aby uniknąć zmian przy każdym renderowaniu to avoid change on every render
652+
// ✅ Opakowanie za pomocą useCallback, aby uniknąć zmian przy każdym renderowaniu
653653
const fetchProduct = useCallback(() => {
654654
// ... Korzysta z productId ...
655655
}, [productId]); // ✅ Zdefiniowane zostały wszystkie zależności useCallback
@@ -665,7 +665,7 @@ function ProductDetails({ fetchProduct }) {
665665
}
666666
```
667667

668-
Zauważ że w powyższym przykładzie, **potrzebowaliśmy** przekazać funkcję do tablicy zależności. Dzięki temu, zmiana właściowści `productId` w `ProductPage`, będzie automatycznie uruchamiała ponowne pobranie danych w komponencie `ProductDetails`.
668+
Zauważ, że w powyższym przykładzie **musieliśmy** przekazać funkcję do tablicy zależności. Dzięki temu zmiana właściwości `productId` w `ProductPage` będzie automatycznie uruchamiała ponowne pobranie danych w komponencie `ProductDetails`.
669669

670670
### What can I do if my effect dependencies change too often? {#what-can-i-do-if-my-effect-dependencies-change-too-often}
671671

0 commit comments

Comments
 (0)