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
You are probably here because you got the following error message:
7
+
Jesteś tu najprawdopodobniej z powodu błędu:
8
8
9
9
> Hooks can only be called inside the body of a function component.
10
10
11
-
There are three common reasons you might be seeing it:
11
+
Zwykle pojawia się on z trzech powodów:
12
12
13
-
1.You might have **mismatching versions**of React and React DOM.
14
-
2.You might be **breaking the [Rules of Hooks](/docs/hooks-rules.html)**.
15
-
3.You might have **more than one copy of React**in the same app.
13
+
1.Używasz **różnych wersji**bibliotek React i React DOM.
14
+
2.**Łamiesz [Zasady korzystania z hooków](/docs/hooks-rules.html)**.
15
+
3.Masz **więcej niż jedną kopię Reacta**w danej aplikacji.
16
16
17
-
Let's look at each of these cases.
17
+
Przyjrzyjmy się bliżej każdemu z tych przypadków.
18
18
19
-
## Mismatching Versions of React and React DOM {#mismatching-versions-of-react-and-react-dom}
19
+
## Niepasujące wersje Reacta i React DOM {#mismatching-versions-of-react-and-react-dom}
20
20
21
-
You might be using a version of `react-dom` (< 16.8.0) or`react-native` (< 0.59) that doesn't yet support Hooks. You can run `npm ls react-dom`or`npm ls react-native`in your application folder to check which version you're using. If you find more than one of them, this might also create problems (more on that below).
21
+
Być może używasz paczki `react-dom` (< 16.8.0) lub`react-native` (< 0.59), która jeszcze nie obsługuje hooków. Uruchom polecenie `npm ls react-dom`lub`npm ls react-native`w katalogu z aplikacją, aby sprawdzić numer używanej wersji. Jeśli ponadto na liście zobaczysz co najmniej dwa takie same wpisy, może to być przyczyną kolejnych problemów (o czym piszemy poniżej).
22
22
23
-
## Breaking the Rules of Hooks {#breaking-the-rules-of-hooks}
23
+
## Łamanie zasad korzystania z hooków {#breaking-the-rules-of-hooks}
24
24
25
-
You can only call Hooks **while React is rendering a function component**:
25
+
Hooki możesz wywoływać **tylko w komponentach funkcyjnych**:
26
26
27
-
* ✅ Call them at the top level in the body of a function component.
28
-
* ✅ Call them at the top level in the body of a [custom Hook](/docs/hooks-custom.html).
27
+
* ✅ Wywołuj je na głównym poziomie ciała komponentu funkcyjnego.
28
+
* ✅ Wywołuj je na głównym poziomie ciała [własnego hooka](/docs/hooks-custom.html).
29
29
30
-
**Learn more about this in the [Rules of Hooks](/docs/hooks-rules.html).**
30
+
**Więcej na ten temat dowiesz się w rozdziale pt. [Zasady korzystania z hooków](/docs/hooks-rules.html).**
To avoid confusion, it’s**not**supported to call Hooks in other cases:
46
+
Dla jasności, hooków**nie**można wywoływać w następujący sposób:
47
47
48
-
* 🔴 Do not call Hooks in class components.
49
-
* 🔴 Do not call in event handlers.
50
-
* 🔴 Do not call Hooks inside functions passed to `useMemo`, `useReducer`, or`useEffect`.
48
+
* 🔴 Nie wywołuj hooków w komponentach klasowych.
49
+
* 🔴 Nie wywołuj hooków w producerach obsługi zdarzeń.
50
+
* 🔴 Nie wywołuj hooków w funkcjach przekazanych do `useMemo`, `useReducer` lub`useEffect`.
51
51
52
-
If you break these rules, you might see this error.
52
+
Jeśli złamiesz te zasady, otrzymasz powyższe ostrzeżenie.
53
53
54
54
```js{3-4,11-12,20-21}
55
55
function Bad1() {
56
56
function handleClick() {
57
-
// 🔴 Bad: inside an event handler (to fix, move it outside!)
57
+
// 🔴 Źle: wewnątrz procedury obsługi zdarzeń (wystarczy przenieść na zewnątrz!)
58
58
const theme = useContext(ThemeContext);
59
59
}
60
60
// ...
61
61
}
62
62
63
63
function Bad2() {
64
64
const style = useMemo(() => {
65
-
// 🔴 Bad: inside useMemo (to fix, move it outside!)
65
+
// 🔴 Źle: wewnątrz useMemo (wystarczy przenieść na zewnątrz!)
66
66
const theme = useContext(ThemeContext);
67
67
return createStyle(theme);
68
68
});
@@ -71,52 +71,52 @@ function Bad2() {
71
71
72
72
class Bad3 extends React.Component {
73
73
render() {
74
-
// 🔴 Bad: inside a class component
74
+
// 🔴 Źle: w komponencie klasowym
75
75
useEffect(() => {})
76
76
// ...
77
77
}
78
78
}
79
79
```
80
80
81
-
You can use the [`eslint-plugin-react-hooks` plugin](https://www.npmjs.com/package/eslint-plugin-react-hooks)to catch some of these mistakes.
81
+
Z pomocą [wtyczki `eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks)możesz wyłapać te błędy w trakcie pisania kodu.
82
82
83
-
>Note
83
+
>Uwaga
84
84
>
85
-
>[Custom Hooks](/docs/hooks-custom.html)*may* call other Hooks (that's their whole purpose). This works because custom Hooks are also supposed to only be called while a function component is rendering.
85
+
>[Własne hooki](/docs/hooks-custom.html)*mogą* wywoływać inne hooki (taki jest ich cel). Dzieje się tak dlatego, że własne hooki także mogą być wywoływane jedynie wewnątrz komponentów funkcyjnych.
86
86
87
87
88
-
## Duplicate React {#duplicate-react}
88
+
## Duplikaty biblioteki React {#duplicate-react}
89
89
90
-
In order for Hooks to work, the`react`import from your application code needs to resolve to the same module as the `react`import from inside the `react-dom` package.
90
+
Aby hooki mogły działać, paczka`react`importowana w twojej aplikacji musi wskazywać na tę samą paczkę `react`importowaną przez `react-dom`.
91
91
92
-
If these `react` imports resolve to two different exports objects, you will see this warning. This may happen if you**accidentally end up with two copies**of the `react` package.
92
+
Jeśli te importy wskazują na dwa różne obiekty, zobaczysz powyższe ostrzeżenie. Może się to zdarzyć, gdy**przypadkiem w projekcie znajdą się dwie kopie**paczki `react`.
93
93
94
-
If you use Node for package management, you can run this check in your project folder:
94
+
Jeśli używasz Node'a do zarządzania paczkami, możesz sprawdzić to, uruchamiając w folderze projektu polecenie:
95
95
96
96
npm ls react
97
97
98
-
If you see more than one React, you'll need to figure out why this happens and fix your dependency tree. For example, maybe a library you're using incorrectly specifies `react`as a dependency (rather than a peer dependency). Until that library is fixed, [Yarn resolutions](https://yarnpkg.com/lang/en/docs/selective-version-resolutions/) is one possible workaround.
98
+
Jeżeli na zwróconej liście zobaczysz więcej niż jednego Reacta, musisz znaleźć przyczynę i naprawić drzewo zależności projektu. Być może któraś z używanych przez ciebie paczek zamiast deklarować `react`jako "peer dependency", deklaruje ją jako "dependency". Dopóki ta paczka nie zostanie naprawiona, możesz obejść problem, korzystając z [Yarn resolutions](https://yarnpkg.com/lang/en/docs/selective-version-resolutions/).
99
99
100
-
You can also try to debug this problem by adding some logs and restarting your development server:
100
+
W zdiagnozowaniu problemu może pomóc dodanie paru logów do aplikacji i zrestartowanie serwera deweloperskiego:
101
101
102
102
```js
103
-
//Add this in node_modules/react-dom/index.js
103
+
//Dodaj w node_modules/react-dom/index.js
104
104
window.React1=require('react');
105
105
106
-
//Add this in your component file
106
+
//Dodaj w pliku z komponentem
107
107
require('react-dom');
108
108
window.React2=require('react');
109
109
console.log(window.React1===window.React2);
110
110
```
111
111
112
-
If it prints `false` then you might have two Reacts and need to figure out why that happened. [This issue](https://github.com/facebook/react/issues/13991)includes some common reasons encountered by the community.
112
+
Jeśli w konsoli pojawi się `false`, to najprawdopodobniej używasz dwóch różnych paczek Reacta i musisz dowiedzieć się, jaka jest tego przyczyna. W [tym zgłoszonym problemie](https://github.com/facebook/react/issues/13991)opisano niektóre z najbardziej powszechnych przyczyn tego problemu.
113
113
114
-
This problem can also come up when you use `npm link`or an equivalent. In that case, your bundler might "see" two Reacts — one in application folder and one in your library folder. Assuming `myapp`and`mylib`are sibling folders, one possible fix is to run `npm link ../myapp/node_modules/react`from `mylib`. This should make the library use the application's React copy.
114
+
Inną przyczyną może być użycie polecenia `npm link`lub podobnego. W takim przypadku twój bundler (ang. *narzędzie pakujące*) może "widzieć" dwa Reacty - jeden w folderze aplikacji i jeden w folderze z bibliotekami. Zakładając, że foldery `myapp`i`mylib`znajdują się na tym samym poziomie, pomóc może uruchomienie polecenia `npm link ../myapp/node_modules/react`z folderu `mylib`. Powinno to zmusić bibliotekę do używania kopii Reacta należącej do aplikacji.
115
115
116
-
>Note
116
+
>Uwaga
117
117
>
118
-
>In general, React supports using multiple independent copies on one page (for example, if an app and a third-party widget both use it). It only breaks if `require('react')`resolves differently between the component and the `react-dom` copy it was rendered with.
118
+
>Z założenia React pozwala na używanie kilku niezależnych kopii biblioteki na jednej stronie (np. gdy korzystają z niej zarówno aplikacja, jak i zewnętrzny widget). Problem występuje tylko wtedy, gdy wywołanie `require('react')`wskazuje co innego dla komponentu, a co innego dla kopii biblioteki `react-dom`.
119
119
120
-
## Other Causes {#other-causes}
120
+
## Inne przypadki {#other-causes}
121
121
122
-
If none of this worked, please comment in [this issue](https://github.com/facebook/react/issues/13991) and we'll try to help. Try to create a small reproducing example — you might discover the problem as you're doing it.
122
+
Jeśli nie pomogło żadne z powyższych rozwiązań, napisz komentarz w [tym wątku](https://github.com/facebook/react/issues/13991), a spróbujemy ci pomóc. Postaraj się przygotować prosty przykład ilustrujący problem - możliwe, że znajdziesz rozwiązanie w trakcie opisywania problemu.
0 commit comments