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
+20-20Lines changed: 20 additions & 20 deletions
Original file line number
Diff line number
Diff line change
@@ -578,48 +578,48 @@ W zależności od przypadku użycia, poniżej opisanych jest także kilka dodatk
578
578
579
579
Spójrzmy, dlaczego ma to znaczenie.
580
580
581
-
Jeżeli sprecyzujesz [listę zależności](/docs/hooks-reference.html#conditionally-firing-an-effect), ostatni argument dla `useEffect`, `useMemo`, `useCallback`, lub `useImperativeHandle`, musi 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
+
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.
582
582
583
-
It is **only**safe to omit a function from the dependency list if nothing in it (or the functions called by it) references props, state, or values derived from them. This example has a bug:
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:
const response = await fetch('http://myapi/product' + productId); // Używa właściwości productId
591
591
const json = await response.json();
592
592
setProduct(json);
593
593
}
594
594
595
595
useEffect(() => {
596
596
fetchProduct();
597
-
}, []); // 🔴 Invalid because `fetchProduct` uses `productId`
597
+
}, []); // 🔴 Błąd ponieważ `fetchProduct` używa `productId`
598
598
// ...
599
599
}
600
600
```
601
601
602
-
**The recommended fix is to move that function _inside_ of your effect**. That makes it easy to see which props or state your effect uses, and to ensure they're all declared:
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:
603
603
604
604
```js{5-10,13}
605
605
function ProductPage({ productId }) {
606
606
const [product, setProduct] = useState(null);
607
607
608
608
useEffect(() => {
609
-
// By moving this function inside the effect, we can clearly see the values it uses.
609
+
// Po przeniesienu funkcji do wnętrza efektu, możemy łatwo dostrzec, których wartości używa.
}, [productId]); // ✅ Valid because our effect only uses productId
617
+
}, [productId]); // ✅ Poprawnie, ponieważ efekt używa wyłacznie productId
618
618
// ...
619
619
}
620
620
```
621
621
622
-
This also allows you to handle out-of-order responses with a local variable inside the effect:
622
+
Pozwala to również na zapobieganie, niepoprawnym odpowiedziom, stosując zmienną lokalną wewnątrz efektu:
623
623
624
624
```js{2,6,10}
625
625
useEffect(() => {
@@ -635,37 +635,37 @@ This also allows you to handle out-of-order responses with a local variable insi
635
635
}, [productId]);
636
636
```
637
637
638
-
We moved the function inside the effect so it doesn't need to be in its dependency list.
638
+
Przenieśliśmy funkcję do wnętrza efektu, dlatego też nie musi się znajdować w tablicy zależności.
639
639
640
-
>Tip
640
+
>Wskazówka
641
641
>
642
-
>Check out [this small demo](https://codesandbox.io/s/jvvkoo8pq3)and [this article](https://www.robinwieruch.de/react-hooks-fetch-data/) to learn more about data fetching with Hooks.
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
-
**If for some reason you _can't_ move a function inside an effect, there are a few more options:**
644
+
**Jeżeli z jakichś przyczyn, _nie_ możesz przenieść funkcji do wnętrza efektu, istnieje kilka innych opcji:**
645
645
646
-
***You can try moving that function outside of your component**. In that case, the function is guaranteed to not reference any props or state, and also doesn't need to be in the list of dependencies.
647
-
*If the function you're calling is a pure computation and is safe to call while rendering, you may**call it outside of the effect instead,**and make the effect depend on the returned value.
648
-
*As a last resort, you can **add a function to effect dependencies but _wrap its definition_** into the [`useCallback`](/docs/hooks-reference.html#usecallback) Hook. This ensures it doesn't change on every render unless *its own* dependencies also change:
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.
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
-
// ✅ Wrap with useCallback to avoid change on every render
652
+
// ✅ Opakowanie za pomocą useCallback, aby uniknąć zmian przy każdym renderowaniu to avoid change on every render
653
653
const fetchProduct = useCallback(() => {
654
-
// ... Does something with productId ...
655
-
}, [productId]); // ✅ All useCallback dependencies are specified
654
+
// ... Korzysta z productId ...
655
+
}, [productId]); // ✅ Zdefiniowane zostały wszystkie zależności useCallback
}, [fetchProduct]); // ✅ All useEffect dependencies are specified
663
+
}, [fetchProduct]); // ✅ Zdefiniowane zostały wszystkie zależności useEffect
664
664
// ...
665
665
}
666
666
```
667
667
668
-
Note that in the above example we **need**to keep the function in the dependencies list. This ensures that a change in the `productId`prop of `ProductPage` automatically triggers a refetch in the `ProductDetails` component.
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`.
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