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-faq.md
+16-16Lines changed: 16 additions & 16 deletions
Original file line number
Diff line number
Diff line change
@@ -544,7 +544,7 @@ function Example({ someProp }) {
544
544
}
545
545
```
546
546
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:
548
548
549
549
```js{4,8}
550
550
function Example({ someProp }) {
@@ -558,7 +558,7 @@ function Example({ someProp }) {
558
558
}
559
559
```
560
560
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ć `[]`:
562
562
563
563
```js{7}
564
564
useEffect(() => {
@@ -570,17 +570,17 @@ useEffect(() => {
570
570
}, []); // ✅ OK, ponieważ *żadne* wartości z zakresu komponentu nie są używane wewnątrz efektu
571
571
```
572
572
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.
574
574
575
575
>Uwaga
576
576
>
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.
578
578
579
579
Spójrzmy, dlaczego ma to znaczenie.
580
580
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.
582
582
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:
584
584
585
585
```js{5,12}
586
586
function ProductPage({ productId }) {
@@ -594,12 +594,12 @@ function ProductPage({ productId }) {
594
594
595
595
useEffect(() => {
596
596
fetchProduct();
597
-
}, []); // 🔴 Błąd ponieważ `fetchProduct` używa `productId`
597
+
}, []); // 🔴 Błąd, ponieważ `fetchProduct` używa `productId`
598
598
// ...
599
599
}
600
600
```
601
601
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:
603
603
604
604
```js{5-10,13}
605
605
function ProductPage({ productId }) {
@@ -614,12 +614,12 @@ function ProductPage({ productId }) {
614
614
}
615
615
616
616
fetchProduct();
617
-
}, [productId]); // ✅ Poprawnie, ponieważ efekt używa wyłacznie productId
617
+
}, [productId]); // ✅ Poprawnie, ponieważ efekt używa wyłącznie productId
618
618
// ...
619
619
}
620
620
```
621
621
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:
623
623
624
624
```js{2,6,10}
625
625
useEffect(() => {
@@ -639,17 +639,17 @@ Przenieśliśmy funkcję do wnętrza efektu, dlatego też nie musi się znajdowa
639
639
640
640
>Wskazówka
641
641
>
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/).
643
643
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:**
645
645
646
-
***Możesz spróbować przenieść tę 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.
648
648
* 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:
649
649
650
650
```js{2-5}
651
651
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
653
653
const fetchProduct = useCallback(() => {
654
654
// ... Korzysta z productId ...
655
655
}, [productId]); // ✅ Zdefiniowane zostały wszystkie zależności useCallback
@@ -665,7 +665,7 @@ function ProductDetails({ fetchProduct }) {
665
665
}
666
666
```
667
667
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`.
669
669
670
670
### What can I do if my effect dependencies change too often? {#what-can-i-do-if-my-effect-dependencies-change-too-often}
0 commit comments