@@ -7,30 +7,29 @@ title: Rules of Hooks
77<ConsoleBlock level =" error " >
88
99Hooks can only be called inside the body of a function component. \
10- ููู
ูู ุงุณุชูุฏุนุงุก ุงูุฎุทุงูุงุช ููุท ุฏุงุฎู ู
ููููู ุฏุงููุฉ.
11-
10+ ููู
ูู ุงุณุชูุฏุนุงุก ุงูุฎุทุงุทูู ููุท ุฏุงุฎู ู
ููู ุฏุงููุฉ.
1211</ConsoleBlock >
1312
1413ูููุงู ุซูุงุซุฉ ุฃุณุจุงุจ ุดุงุฆุนู ูุธููุฑ ุงูุฎุทุฃ ุฃุนูุงู:
1514
16151 . ููุฏูู ** ููุณุฎ ุบูุฑ ู
ูุชูุงููุฉ** ู
ู React ู React DOM.
17- 2 . ูุฏ ุชููู ** ุชุฎุฑู [ ููุงุนุฏ ุงูุฎุทุงูุงุช ] ( /docs/hooks-rules.html ) ** .
16+ 2 . ูุฏ ุชููู ** ุชุฎุฑู [ ููุงุนุฏ ุงูุฎุทุงุทูู ] ( /docs/hooks-rules.html ) ** .
18173 . ู
ู ุงูู
ูุญุชู
ู ุฃู ูููู ูุฏูู ** ุฃูุซุฑ ู
ู ูุณุฎุฉ React** ูู ููุณ ุงูุชุทุจูู.
1918
2019ุฏูุนูุง ููุธูุฑ ุฅูู ููู ู
ู ุงูุญุงูุงุช ุฃุนูุงู.
2120
2221## ููุณุฎ ุบูุฑ ู
ูุชูุงููุฉ ู
ู React ู React DOM {/* mismatching-versions-of-react-and-react-dom* /}
2322
24- ูุฏ ุชููู ุชุณุชุฎุฏู
ูุณุฎุฉ ` react-dom ` ุฃูู ู
ู v16.8.0 ุฃู ููุณุฎุฉ ` react-native ` ุฃูู ู
ู 0.59 ูุงููููุชูุงูู ูุง ูุฏุนู
ุงู ุงูุฎุทุงูุงุช ุจุนุฏ. ููู
ููู ุชูููุฐ "run" ุฃู
ุฑ ` npm ls react-dom ` ุฃู ` npm ls react-native ` ูู ู
ูุฌููุฏ ุงูุชุทุจูู ุฎุงุตุชู ูู
ุนุฑูุฉ ุงูููุณุฎุฉ ุงูุชู ุชุณุชุฎุฏู
ูุง. ุฅู ูุฌุฏุช ุฃูุซุฑ ู
ู ููุณุฎุฉ ููุฏ ูุฎูู ุฐูู ู
ุดุงูู (ุงูู
ุฒูุฏ ุนูู ุฐูู ุฃุฏูุงู).
23+ ูุฏ ุชููู ุชุณุชุฎุฏู
ูุณุฎุฉ ` react-dom ` ุฃูู ู
ู v16.8.0 ุฃู ููุณุฎุฉ ` react-native ` ุฃูู ู
ู 0.59 ูุงููููุชูุงูู ูุง ูุฏุนู
ุงู ุงูุฎุทุงุทูู ุจุนุฏ. ููู
ููู ุชูููุฐ ุฃู
ุฑ ` npm ls react-dom ` ุฃู ` npm ls react-native ` ูู ู
ูุฌููุฏ ุงูุชุทุจูู ุฎุงุตุชู ูู
ุนุฑูุฉ ุงูููุณุฎุฉ ุงูุชู ุชุณุชุฎุฏู
ูุง. ุฅู ูุฌุฏุช ุฃูุซุฑ ู
ู ููุณุฎุฉ ููุฏ ูุฎูู ุฐูู ู
ุดุงูู (ุงูู
ุฒูุฏ ุนูู ุฐูู ุฃุฏูุงู).
2524
26- ## ุฎุฑู ููุงุนุฏ ุงูุฎุทุงูุงุช {/* breaking-the-rules-of-hooks* /}
25+ ## ุฎุฑู ููุงุนุฏ ุงูุฎุทุงุทูู {/* breaking-the-rules-of-hooks* /}
2726
2827ูููู
ูู ุงุณุชุฏุนุงุก ุงูุฎุธุงูุงุช ** ุฑูููุซูู
ูุง ุชูุตููุฑ React ู
ูููู ุฏุงููุฉ** ููุท:
2928
30- * โ
ุงุณุชุฏุนููู
ูู ุงูู
ูุชุณูู ุงูุฃุนูู ู
ู ุจุฏู "body" ู
ููููู ุงูุฏุงููุฉ:
31- * โ
ุงุณุชุฏุนููู
ูู ุงูู
ูุณุชูู ุงูุฃุนูู ู
ู ุจุฏู [ ุฎุทุงู ู
ูุฎูุตุต] ( /docs/hooks-custom.html ) .
29+ * โ
ุงุณุชุฏุนูู
ูู ุงูู
ูุชุณูู ุงูุฃุนูู ู
ู ุจุฏู "body" ู
ููููู ุงูุฏุงููุฉ:
30+ * โ
ุงุณุชุฏุนูู
ูู ุงูู
ูุณุชูู ุงูุฃุนูู ู
ู ุจุฏู [ ุฎุทุงู ู
ูุฎูุตุต] ( /docs/hooks-custom.html ) .
3231
33- ** ุชูุนููู
ุงูู
ุฒูุฏ ุนู ุฐูู ูู [ ููุงุนุฏ ุงูุฎุทุงูุงุช ] ( /docs/hooks-rules.html ) **
32+ ** ุชูุนููู
ุงูู
ุฒูุฏ ุนู ุฐูู ูู [ ููุงุนุฏ ุงูุฎุทุงุทูู ] ( /docs/hooks-rules.html ) **
3433
3534``` js{2-3,8-9}
3635function Counter() {
@@ -46,11 +45,11 @@ function useWindowWidth() {
4645}
4746```
4847
49- ููุชูุฌูููุจ ุงูุฅุฑุจุงู ุ ุงุณุชุฏุนุงุก ุงูุฎุทุงูุงุช ูู ุงูุญุงูุงุช ุงูุฃูุฎุฑู ** ููุณ** ู
ุฏุนูู
ูุง:
48+ ููุชูุฌูููุจ ุงูุฅุฑุจุงู ุ ุงุณุชุฏุนุงุก ุงูุฎุทุงุทูู ูู ุงูุญุงูุงุช ุงูุฃูุฎุฑู ** ููุณ** ู
ุฏุนูู
ูุง:
5049
51- * ๐ด ูุง ุชูุณุชุฏุนู ุงูุฎุทุงูุงุช ูู ู
ููููุงุช ุงูุตูู.
52- * ๐ด ูุง ุชุณุชุฏุนู ุงูุฎุทุงูุงุช ูู ู
ูุนุงู
ููุงุช ุงูุฃุญุฏุงุซ "event handlers".
53- * ๐ด ูุง ุชุณุชุฏุนู ุงูุฎุทุงูุงุช ุฏุงุฎู ุงูุฏูุงู ุงูู
ูู
ูุฑูุฑุฉ ุฅูู ` useMemo ` ุฃู ` useReducer ` ุฃู ` useEffect ` .
50+ * ๐ด ูุง ุชูุณุชุฏุนู ุงูุฎุทุงุทูู ูู ู
ููููุงุช ุงูุตูู.
51+ * ๐ด ูุง ุชุณุชุฏุนู ุงูุฎุทุงุทูู ูู ู
ูุนุงู
ููุงุช ุงูุฃุญุฏุงุซ "event handlers".
52+ * ๐ด ูุง ุชุณุชุฏุนู ุงูุฎุทุงุทูู ุฏุงุฎู ุงูุฏูุงู ุงูู
ูู
ูุฑูุฑุฉ ุฅูู ` useMemo ` ุฃู ` useReducer ` ุฃู ` useEffect ` .
5453
5554ุฅู ุฎุฑูุช ุชูู ุงูููุงุนุฏ ูู
ู ุงูู
ูู
ูู ุงู ุชุฑู ูุฐุง ุงูุฎุทุฃ.
5655
@@ -110,15 +109,15 @@ class Bad extends React.Component {
110109
111110<Note >
112111
113- > [ ุงูุฎุทุงูุงุช ุงูู
ูุฎุตูุตุฉ] ( /docs/hooks-custom.html ) * ู
ู ุงูู
ูุญุชู
ู* ุฃู ุชุณุชุฏุนู ุฎุทุงูุงุช ุฃูุฎุฑู (ูุฐูู ูู ุงููุฏู ู
ููุง ุฃุณุงุณูุง). ูุนู
ู ุฐูู ูุฃูู ู
ู ุงูู
ูุฑูุถ ุฃู ุงูุฎุทุงูุงุช ุงูู
ูุฎุตูุตุฉ ุชูุณุชุฏุนู ููุท ุฑูููุซูู
ูุง ููุตููููุฑ ูููู ู
ูููู ุงูุฏุงููุฉ.
112+ > [ ุงูุฎุทุงุทูู ุงูู
ูุฎุตูุตุฉ] ( /docs/hooks-custom.html ) * ู
ู ุงูู
ูุญุชู
ู* ุฃู ุชุณุชุฏุนู ุฎุทุงุทูู ุฃูุฎุฑู (ูุฐูู ูู ุงููุฏู ู
ููุง ุฃุณุงุณูุง). ูุนู
ู ุฐูู ูุฃูู ู
ู ุงูู
ูุฑูุถ ุฃู ุงูุฎุทุงุทูู ุงูู
ูุฎุตูุตุฉ ุชูุณุชุฏุนู ููุท ุฑูููุซูู
ูุง ููุตููููุฑ ูููู ู
ูููู ุงูุฏุงููุฉ.
114113
115114</Note >
116115
117116## ููุณุฎูุชูู ู
ูู React {/* duplicate-react* /}
118117
119- ุญุชู ุชุนู
ู ุงูุฎุทุงูุงุช ุ ูุฌุจ ุงู ูููู ุงู
ุฑ ุงูุงุณุชูุฑุงุฏ "import" ูู ุดููุฑุฉ ุงูุชุทุจูู ุฎุงุตูุชูู ููุญููููู "resolve" ุฅูู ููุณ ุงููุงุฌูุฉ "module" ุงูุชู ูู ุฃู
ุฑ ุงูุงุณุชูุฑุงุฏ ุฏุงุฎู ุญูุฒู
ุฉ ` react-dom ` .
118+ ุญุชู ุชุนู
ู ุงูุฎุทุงุทูู ุ ูุฌุจ ุงู ูููู ุงู
ุฑ ุงูุงุณุชูุฑุงุฏ "import" ูู ุดููุฑุฉ ุงูุชุทุจูู ุฎุงุตูุชูู ููุญููููู "resolve" ุฅูู ููุณ ุงููุงุฌูุฉ "module" ุงูุชู ูู ุฃู
ุฑ ุงูุงุณุชูุฑุงุฏ ุฏุงุฎู ุญูุฒู
ุฉ ` react-dom ` .
120119
121- ุฅู ุญูููููุง ุฃู
ุฑุง ุงุณุชูุฑุงุฏ ` react ` ุฅูู ูุงุฆููู ุชุตุฏูุฑ ู
ูุฎุชููููููู ุ ูุฃูู ุณุชุฑู ูุฐุง ุงูุฎุทุฃ. ูุญุฏุซ ุฐูู ุฅู ** ูุงูุช ูุฏูู ูุณุฎุชุงู** ู
ู ุญูุฒู
ุฉ ` react ` .
120+ ุฅู ุญูููููุง ุฃู
ุฑุง ุงุณุชูุฑุงุฏ ` react ` ุฅูู ูุงุฆููู ุชุตุฏูุฑ ู
ูุฎุชููููููู ุ ูุฃูู ุณุชุฑู ูุฐุง ุงูุฎุทุฃ. ูุญุฏุซ ุฐูู ุฅู ** ูุงูุช ูุฏูู ูุณุฎุชุงู** ู
ู ุญูุฒู
ุฉ ` react ` .
122121
123122ุฅู ูููุช ุชุณุชุฎุฏู
Node ูุชูุธูู
ุงูุญูุฒู
"package management" ุ ููููู
ูู ุชูููุฐ ุงูุฃู
ุฑ ุงููุญุต ุงูุชุงูู ูู ู
ูุฌููุฏ ุงูู
ุดุฑูุญ ุฎุงุตูุชู:
124123
@@ -144,7 +143,7 @@ console.log(window.React1 === window.React2);
144143
145144ุฅู ุทูุจูุนู ` false ` ูุฃููู ู
ู ุงูู
ูู
ูู ุฃู ูููู ูุฏูู ุงุซูุงู ู
ู React ู ุนููู ู
ุนุฑูุฉ ุณุจุจ ุญุตูู ุฐูู. [ ูุฐู ุงูุชุฐูุฑู "issue"] ( https://github.com/facebook/react/issues/13991 ) ุชุญุชูู ุนูู ุจุนุถ ุงูุฃุณุจุงุจ ุงูุดุงุฆุนุฉ.
146145
147- ูุฐู ุงูู
ูุดููุฉ ูุฏ ุชุธูุฑ ุนูุฏ ุชูููุฐู ูุฃู
ุฑ ` npm link ` ุฃู ุฃู
ุฑูุง ู
ุดุงุจู ูู. ูู ุชูู ุงูุญุงูุฉ ุ ูุฃู ุงูู
ูุฌูู
ููุน "bundler" ูุฏ ููุฑู ุงุซูุงู React - ูุงุญุฏุฉ ูู ู
ูุฌููุฏ ุงูุชุทุจูู ูุงูุฃูุฎุฑู ูู ู
ูุฌููุฏ ุงูู
ูุชุจุฉ. ุงุนุชูุจุงุฑูุง ` myapp ` ู ` mylib ` ู
ูุฌููุฏุงู ุฅุฎูุฉ (ุนูู ููุณ ุงูู
ูุณุชูู) ููุฏ ูููู ุชูููุฐ ุฃู
ุฑ ` npm link ../myapp/node_modules/react ` ู
ู ` mylib ` ุญููุง ู
ูุญุชูู
ููุง. ูููู
ุฐูู ุจุฌุนู ุงูู
ูุชุจุฉ ุชุณุชุฎุฏู
ูุณุฎุฉ React ููุชุทุจูู.
146+ ูุฐู ุงูู
ูุดููุฉ ูุฏ ุชุธูุฑ ุนูุฏ ุชูููุฐู ูุฃู
ุฑ ` npm link ` ุฃู ุฃู
ุฑูุง ู
ุดุงุจู ูู. ูู ุชูู ุงูุญุงูุฉ ุ ูุฃู ุงูู
ูุฌูู
ููุน "bundler" ูุฏ ููุฑู ุงุซูุงู React - ูุงุญุฏุฉ ูู ู
ูุฌููุฏ ุงูุชุทุจูู ูุงูุฃูุฎุฑู ูู ู
ูุฌููุฏ ุงูู
ูุชุจุฉ. ุงุนุชูุจุงุฑูุง ` myapp ` ู ` mylib ` ู
ูุฌููุฏุงู ุฅุฎูุฉ (ุนูู ููุณ ุงูู
ูุณุชูู) ููุฏ ูููู ุชูููุฐ ุฃู
ุฑ ` npm link ../myapp/node_modules/react ` ู
ู ` mylib ` ุญููุง ู
ูุญุชูู
ููุง. ูููู
ุฐูู ุจุฌุนู ุงูู
ูุชุจุฉ ุชุณุชุฎุฏู
ูุณุฎุฉ React ููุชุทุจูู.
148147
149148<Note >
150149
0 commit comments