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: src/content/reference/rules/rules-of-hooks.md
+8-9Lines changed: 8 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,9 +1,8 @@
1
1
---
2
2
title: Правила хуков
3
3
---
4
-
5
4
<Intro>
6
-
Хуки определяются как функции JavaScript, но они представляют собой особый тип повторно используемой логики пользовательского интерфейса с ограничениями на то, где они могут быть вызваны.
5
+
Хуки определяются с помощью функций JavaScript, но они представляют собой особый тип повторно используемой логики пользовательского интерфейса с ограничениями на то, где они могут быть вызваны.
7
6
</Intro>
8
7
9
8
<InlineToc />
@@ -14,14 +13,14 @@ title: Правила хуков
14
13
15
14
Функции, имена которых начинаются с `use`, называются [*хуками*](/reference/react) в React.
16
15
17
-
**Не вызывайте хуки внутри циклов, условий, вложенных функций или блоков `try`/`catch`/`finally`.** Вместо этого всегда используйте хуки на верхнем уровне вашей функции React, перед любыми ранними возвратами. Вы можете вызывать хуки только во время рендеринга React для функционального компонента:
16
+
**Не вызывайте хуки внутри циклов, условий, вложенных функций или блоков `try`/`catch`/`finally`.** Вместо этого всегда используйте хуки на верхнем уровне вашей функции React, перед любыми досрочными возвратами. Вы можете вызывать хуки только во время рендеринга компонента функции React:
18
17
19
-
* ✅ Вызывайте их на верхнем уровне в теле [функционального компонента](/learn/your-first-component).
18
+
* ✅ Вызывайте их на верхнем уровне в теле [компонента функции](/learn/your-first-component).
20
19
* ✅ Вызывайте их на верхнем уровне в теле [пользовательского хука](/learn/reusing-logic-with-custom-hooks).
21
20
22
21
```js{2-3,8-9}
23
22
function Counter() {
24
-
// ✅ Хорошо: на верхнем уровне в функциональном компоненте
23
+
// ✅ Хорошо: на верхнем уровне в компоненте функции
25
24
const [count, setCount] = useState(0);
26
25
// ...
27
26
}
@@ -89,7 +88,7 @@ function Bad() {
89
88
90
89
class Bad extends React.Component {
91
90
render() {
92
-
// 🔴 Плохо: внутри классового компонента (чтобы исправить, напишите функциональный компонент вместо класса!)
91
+
// 🔴 Плохо: внутри классового компонента (чтобы исправить, напишите компонент функции вместо класса!)
93
92
useEffect(() => {})
94
93
// ...
95
94
}
@@ -109,17 +108,17 @@ function Bad() {
109
108
110
109
<Note>
111
110
112
-
[Пользовательские хуки](/learn/reusing-logic-with-custom-hooks)*могут* вызывать другие хуки (в этом и заключается их основная задача). Это работает, потому что пользовательские хуки также должны вызываться только во время рендеринга функционального компонента.
111
+
[Пользовательские хуки](/learn/reusing-logic-with-custom-hooks)*могут* вызывать другие хуки (в этом их основное назначение). Это работает, потому что пользовательские хуки также должны вызываться только во время рендеринга компонента функции.
113
112
114
113
</Note>
115
114
116
115
---
117
116
118
-
## Только вызывайте хуки из функций React {/*only-call-hooks-from-react-functions*/}
117
+
## Вызывайте хуки только из функций React {/*only-call-hooks-from-react-functions*/}
119
118
120
119
Не вызывайте хуки из обычных функций JavaScript. Вместо этого вы можете:
121
120
122
-
✅ Вызывать хуки из функциональных компонентов React.
121
+
✅ Вызывать хуки из компонентов функций React.
123
122
✅ Вызывать хуки из [пользовательских хуков](/learn/reusing-logic-with-custom-hooks#extracting-your-own-custom-hook-from-a-component).
124
123
125
124
Следуя этому правилу, вы гарантируете, что вся логика состояния в компоненте будет четко видна из его исходного кода.
0 commit comments