Skip to content

Commit f375fde

Browse files
committed
Update translation
1 parent 8bfb6b8 commit f375fde

File tree

1 file changed

+22
-22
lines changed

1 file changed

+22
-22
lines changed

content/docs/hooks-faq.md

+22-22
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ Ta strona odpowiada na najczęściej zadawane pytania odnośnie [hooków](/docs/
4747
* [Czy mogę pominąć efekt podczas aktualizacji komponentu?](#can-i-skip-an-effect-on-updates)
4848
* [Czy bezpiecznie jest pomijać funkcje w liście zależności?](#is-it-safe-to-omit-functions-from-the-list-of-dependencies)
4949
* [Co zrobić, gdy zależności mojego efektu zmieniają się zbyt często?](#what-can-i-do-if-my-effect-dependencies-change-too-often)
50-
* [Jak zaimplementować shouldComponentUpdate?](#how-do-i-implement-shouldcomponentupdate)
50+
* [Jak zaimplementować `shouldComponentUpdate`?](#how-do-i-implement-shouldcomponentupdate)
5151
* [Jak memoizować obliczenia?](#how-to-memoize-calculations)
5252
* [Jak w leniwy sposób tworzyć "ciężkie" komponenty?](#how-to-create-expensive-objects-lazily)
5353
* [Czy hooki są wolne z powodu tworzenia funkcji podczas renderowania?](#are-hooks-slow-because-of-creating-functions-in-render)
@@ -671,87 +671,87 @@ Zauważ, że w powyższym przykładzie **musieliśmy** przekazać funkcję do ta
671671

672672
### Co zrobić, gdy zależności mojego efektu zmieniają się zbyt często? {#what-can-i-do-if-my-effect-dependencies-change-too-often}
673673

674-
Sometimes, your effect may be using state that changes too often. You might be tempted to omit that state from a list of dependencies, but that usually leads to bugs:
674+
Czasem twój efekt może korzystać ze stanu, który zmienia się zbyt często. Może cię kusić usunięcie go z listy zależności, jednak zwykle prowadzi to do błędów.:
675675

676676
```js{6,9}
677677
function Counter() {
678678
const [count, setCount] = useState(0);
679679
680680
useEffect(() => {
681681
const id = setInterval(() => {
682-
setCount(count + 1); // This effect depends on the `count` state
682+
setCount(count + 1); // Ten efekt zależy od wartości `count`
683683
}, 1000);
684684
return () => clearInterval(id);
685-
}, []); // 🔴 Bug: `count` is not specified as a dependency
685+
}, []); // 🔴 Błąd: Zmienna `count` nie została wymieniona w zależnościach
686686
687687
return <h1>{count}</h1>;
688688
}
689689
```
690690

691-
The empty set of dependencies, `[]`, means that the effect will only run once when the component mounts, and not on every re-render. The problem is that inside the `setInterval` callback, the value of `count` does not change, because we've created a closure with the value of `count` set to `0` as it was when the effect callback ran. Every second, this callback then calls `setCount(0 + 1)`, so the count never goes above 1.
691+
Pusty zbiór zależności, `[]`, oznacza, że efekt ten zostanie uruchomiony tylko jeden raz podczas montowania komponentu, a nie przy każdym ponownym renderowaniu. Problem polega na tym, iż wartość zmienne `count` wewnątrz funkcji zwrotnej przekazanej do `setInterval` nie będzie się zmieniać. Dzieje się dlatego, że stworzyliśmy dla niej "domknięcie", w którym `count` ma wartość `0`, ponieważ z taką wartością uruchomiono ten efekt. Co sekundę funkcja zwrotna będzie wywoływała `setCount(0 + 1)`, przez co wartość licznika nigdy nie przekroczy 1.
692692

693-
Specifying `[count]` as a list of dependencies would fix the bug, but would cause the interval to be reset on every change. Effectively, each `setInterval` would get one chance to execute before being cleared (similar to a `setTimeout`.) That may not be desirable. To fix this, we can use the [functional update form of `setState`](/docs/hooks-reference.html#functional-updates). It lets us specify *how* the state needs to change without referencing the *current* state:
693+
Podanie `[count]` jako lista zależności mogłoby naprawić ten błąd, jednak spowodowałoby to resetowanie się interwału przy każdej zmianie stanu. W konsekwencji, każdy `setInterval` miałby jedną szansę na wykonanie, zanim zostałby wyczyszczony (zachowanie podobne do `setTimeout`). Raczej nie o to nam chodzi. Aby temu zapobiec, możemy skorzystać z [funkcyjnego wariantu aktualizacji poprzez `setState`](/docs/hooks-reference.html#functional-updates). Pozwoli to nam określić, *jak* stan powinien się zmienić, bez odnoszenia się do konkretnego *aktualnego* stanu:
694694

695695
```js{6,9}
696696
function Counter() {
697697
const [count, setCount] = useState(0);
698698
699699
useEffect(() => {
700700
const id = setInterval(() => {
701-
setCount(c => c + 1); // ✅ This doesn't depend on `count` variable outside
701+
setCount(c => c + 1); // ✅ Nie zależy od zewnętrznej zmiennej `count`
702702
}, 1000);
703703
return () => clearInterval(id);
704-
}, []); // ✅ Our effect doesn't use any variables in the component scope
704+
}, []); // ✅ Nasz efekt nie korzysta z żadnych zmiennych z zakresu komponentu
705705
706706
return <h1>{count}</h1>;
707707
}
708708
```
709709

710-
(The identity of the `setCount` function is guaranteed to be stable so it's safe to omit.)
710+
(Stałość referencyjna funkcji `setCount` jest zagwarantowana przez Reacta, więc można ją pominąć na liście zależności.)
711711

712-
Now, the `setInterval` callback executes once a second, but each time the inner call to `setCount` can use an up-to-date value for `count` (called `c` in the callback here.)
712+
Teraz funkcja zwrotna przekazana do `setInterval` wywoływana jest co sekundę, lecz za każdym razem wywołanie `setCount` wewnątrz korzysta z aktualnej wartości licznika `count` (nazwanej lokalnie jako `c`).
713713

714-
In more complex cases (such as if one state depends on another state), try moving the state update logic outside the effect with the [`useReducer` Hook](/docs/hooks-reference.html#usereducer). [This article](https://adamrackis.dev/state-and-use-reducer/) offers an example of how you can do this. **The identity of the `dispatch` function from `useReducer` is always stable**even if the reducer function is declared inside the component and reads its props.
714+
W bardziej zawiłych przypadkach (np. gdy jeden stan zależy od drugiego), spróbuj przenieść logikę zmiany stanu poza efekt przy pomocy [hooka `useReducer`](/docs/hooks-reference.html#usereducer). [W tym artykule](https://adamrackis.dev/state-and-use-reducer/) pokazano przykład jego zastosowania. **Tożsamość funkcji `dispatch` zwróconej przez `useReducer` jest zawsze stabilna**nawet jeśli reduktor jest deklarowany wewnątrz komponentu i odczytuje jego właściwości.
715715

716-
As a last resort, if you want something like `this` in a class, you can [use a ref](/docs/hooks-faq.html#is-there-something-like-instance-variables) to hold a mutable variable. Then you can write and read to it. For example:
716+
Ostatecznie, jeśli zechcesz skorzystać z czegoś w rodzaju klasowego `this`, możesz [użyć referencji](/docs/hooks-faq.html#is-there-something-like-instance-variables) do przechowania mutowalnej zmiennej. Wtedy możliwe będzie jej nadpisywanie i odczytywanie w dowolnym momencie. Na przykład:
717717

718718
```js{2-6,10-11,16}
719719
function Example(props) {
720-
// Keep latest props in a ref.
720+
// Trzymaj ostatnie właściwości w referencji.
721721
const latestProps = useRef(props);
722722
useEffect(() => {
723723
latestProps.current = props;
724724
});
725725
726726
useEffect(() => {
727727
function tick() {
728-
// Read latest props at any time
728+
// Odczytaj ostatnie właściwości w dowolnym momencie
729729
console.log(latestProps.current);
730730
}
731731
732732
const id = setInterval(tick, 1000);
733733
return () => clearInterval(id);
734-
}, []); // This effect never re-runs
734+
}, []); // Ten efekt nigdy nie uruchomi się ponownie
735735
}
736736
```
737737

738-
Only do this if you couldn't find a better alternative, as relying on mutation makes components less predictable. If there's a specific pattern that doesn't translate well, [file an issue](https://github.com/facebook/react/issues/new) with a runnable example code and we can try to help.
738+
Rób tak tylko gdy nie znajdziesz lepszej alternatywy, ponieważ poleganie na mutacjach negatywnie wpływa na przewidywalność zachowania się komponentów. Jeśli znasz jakiś wzorzec, którego nie da się w prosty sposób wyrazić za pomocą hooków, [zgłoś to](https://github.com/facebook/react/issues/new), załączając przykład działającego kodu, a postaramy się pomóc.
739739

740-
### How do I implement `shouldComponentUpdate`? {#how-do-i-implement-shouldcomponentupdate}
740+
### Jak zaimplementować `shouldComponentUpdate`? {#how-do-i-implement-shouldcomponentupdate}
741741

742-
You can wrap a function component with `React.memo` to shallowly compare its props:
742+
Możesz opakować komponent funkcyjny za pomocą `React.memo`, aby zastosować płytkie porównanie jego właściwości:
743743

744744
```js
745745
const Button = React.memo((props) => {
746-
// your component
746+
// twój komponent
747747
});
748748
```
749749

750-
It's not a Hook because it doesn't compose like Hooks do. `React.memo` is equivalent to `PureComponent`, but it only compares props. (You can also add a second argument to specify a custom comparison function that takes the old and new props. If it returns true, the update is skipped.)
750+
Nie jest to hook, bo nie komponuje się jak hooki. `React.memo` jest odpowiednikiem klasy `PureComponent`, jednak ogranicza się do porównywania wyłącznie właściwości. (Możesz także jako drugi argument przekazać funkcję porównującą poprzednie i aktualne właściwości. Jeśli zwróci `true`, aktualizacja komponentu zostanie pominięta.)
751751

752-
`React.memo` doesn't compare state because there is no single state object to compare. But you can make children pure too, or even [optimize individual children with `useMemo`](/docs/hooks-faq.html#how-to-memoize-calculations).
752+
`React.memo` nie porównuje stanu komponentu, ponieważ nie ma jednego jedynego obiektu stanu, jak to ma miejsce w komponentach klasowych. Możesz jednak sprawić, by potomkowie również byli "czystymi" komponentami (ang. *pure components*), a nawet [zoptymalizować poszczególnych potomków za pomocą `useMemo`](/docs/hooks-faq.html#how-to-memoize-calculations).
753753

754-
### How to memoize calculations? {#how-to-memoize-calculations}
754+
### Jak memoizować obliczenia? {#how-to-memoize-calculations}
755755

756756
The [`useMemo`](/docs/hooks-reference.html#usememo) Hook lets you cache calculations between multiple renders by "remembering" the previous computation:
757757

0 commit comments

Comments
 (0)