Skip to content

Commit e6a7cbc

Browse files
MaximaximumMaksym Kobieliev
authored andcommitted
Update hooks-rules.md
1 parent 7742367 commit e6a7cbc

1 file changed

Lines changed: 16 additions & 16 deletions

File tree

content/docs/hooks-rules.md

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ next: hooks-custom.html
66
prev: hooks-effect.html
77
---
88

9-
*Хуки* — це нововведення в React 16.8. Вони дозволяють вам використовувати стан та інші можливості React без написання класів.
9+
*Хуки* — це нововведення React 16.8. Вони дозволяють вам використовувати стан та інші можливості React без написання класів.
1010

11-
Хуки — звичайні JavaScript функції, але ви маєте дотримуватися двох правил, використовуючи їх. Ми зробили [плагін для лінтеру](https://www.npmjs.com/package/eslint-plugin-react-hooks), щоб автоматично дотримуватися цих правил:
11+
Хуки — звичайні JavaScript-функції, але використовуючи їх, ви маєте дотримуватися двох правил. Ми зробили [плагін для лінтера](https://www.npmjs.com/package/eslint-plugin-react-hooks), щоб автоматично дотримуватися цих правил:
1212

13-
### Використовуйте хуки тільки на вищому рівні {#only-call-hooks-at-the-top-level}
13+
### Використовуйте хуки тільки на найвищому рівні {#only-call-hooks-at-the-top-level}
1414

15-
**Не використовуйте хуки усередині циклів, умовних операторів або вкладених функцій.** Замість цього завжди використовуйте хуки на вищому рівні React-функцій. Дотримуючись цього правила, ви будете певні, що хуки викликаються в однаковій послідовності кожного разу, коли рендериться компонент. Це дозволяє React коректно зберігати стан хуків між численними викликами `useState` та `useEffect`. (Якщо вам цікаво, то ми пояснимо це більш детально [нижче](#explanation).)
15+
**Не використовуйте хуки усередині циклів, умовних операторів або вкладених функцій.** Натомість, завжди використовуйте хуки на найвищому рівні React-функцій. Дотримуючись цього правила, ви будете певні, що хуки викликаються в однаковій послідовності кожного разу, коли рендериться компонент. Це дозволяє React коректно зберігати стан хуків між численними викликами `useState` та `useEffect`. (Якщо вам цікаво, то ми пояснимо це більш детально [нижче](#explanation).)
1616

1717
### Викликайте хуки лише з React-функцій {#only-call-hooks-from-react-functions}
1818

@@ -21,13 +21,13 @@ prev: hooks-effect.html
2121
* ✅ Викликати хуки з функціонального компоненту React.
2222
* ✅ Викликати хуки з користувацьких хуків (ми навчимося це робити [на наступній сторінці](/docs/hooks-custom.html)).
2323

24-
Дотримуючись цього правила, ви можете бути певні, що вся логіка компоненту зі станом чітко проглядається в його вихідному коді.
24+
Дотримуючись цього правила, ви можете бути певні, що вся логіка компонента зі станом чітко проглядається в його джерельному коді.
2525

2626
## Плагін для ESLint {#eslint-plugin}
2727

28-
Ми випустили плагін для ESLint [`eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks), який примушує дотримуватися цих двох правил. Ви можете додати цей плагін до вашого проекту, якщо ви хочете його спробувати:
28+
Ми випустили плагін для ESLint [`eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks), який примушує дотримуватися цих двох правил. Ви можете додати цей плагін до свого проекту, якщо ви хочете його спробувати:
2929

30-
This plugin is included by default in [Create React App](/docs/create-a-new-react-app.html#create-react-app).
30+
Цей плагін використовується за замовчуванням у [Create React App](/docs/create-a-new-react-app.html#create-react-app).
3131

3232
```bash
3333
npm install eslint-plugin-react-hooks --save-dev
@@ -48,11 +48,11 @@ npm install eslint-plugin-react-hooks --save-dev
4848
}
4949
```
5050

51-
**Ви можете пропустити залишок сторінки та перейти до наступної, яка пояснює як писати [користувацькі хуки](/docs/hooks-custom.html).** На цій сторінці ми продовжимо і надамо пояснення необхідності цих правил.
51+
**Ви можете пропустити залишок сторінки та перейти до наступної, яка пояснює як писати [користувацькі хуки](/docs/hooks-custom.html).** На цій сторінці ми продовжимо і пояснимо необхідність цих правил.
5252

5353
## Пояснення {#explanation}
5454

55-
Як ми [дізналися раніше](/docs/hooks-state.html#tip-using-multiple-state-variables), в одному компоненті можна багаторазово використовувати хуки стану або ефектів:
55+
Як ми [дізналися раніше](/docs/hooks-state.html#tip-using-multiple-state-variables), в одному компоненті можна використовувати декілька хуків стану або ефектів:
5656

5757
```js
5858
function Form() {
@@ -64,7 +64,7 @@ function Form() {
6464
localStorage.setItem('formData', name);
6565
});
6666

67-
// 3. Використовуємо змінну стану state
67+
// 3. Використовуємо змінну стану surname
6868
const [surname, setSurname] = useState('Костенко');
6969

7070
// 4. Використовуємо ефект, щоб оновити заголовок сторінки
@@ -76,7 +76,7 @@ function Form() {
7676
}
7777
```
7878

79-
Отже, як React дізнається який стан відповідає певному виклику `useState`? Відповідь наступна: **React покладається на послідовність викликів хуків**. Наш приклад працює тому, що послідовність викликів хуків є сталою для кожного рендеру:
79+
Отже, як React дізнається, який стан відповідає певному виклику `useState`? Відповідь наступна: **React покладається на послідовність викликів хуків**. Наш приклад працює тому, що послідовність викликів хуків є сталою для кожного рендеру:
8080

8181
```js
8282
// ------------
@@ -98,7 +98,7 @@ useEffect(updateTitle) // 4. Змінюємо ефект, щоб онови
9898
// ...
9999
```
100100

101-
Доки послідовність викликів хуків залишається сталою між рендерами, React може співвідносити локальний стан між кожним з них. Але, що трапиться, якщо ми розмістимо виклик хуку (наприклад, ефект `persistForm`) всередину умовного оператору?
101+
Доки послідовність викликів хуків залишається сталою між рендерами, React може співвідносити локальний стан з кожним із них. Але що трапиться, якщо ми розмістимо виклик хуку (наприклад, ефект `persistForm`) всередину умовного оператору?
102102

103103
```js
104104
// 🔴 Ми порушуємо перше правило, розміщуючи хук всередині умовного оператору
@@ -118,9 +118,9 @@ useState('Костенко') // 🔴 2 (але був 3). Помилка
118118
useEffect(updateTitle) // 🔴 3 (but was 4). Помилка при зміні ефекту
119119
```
120120

121-
React не знатиме, що повернути для другого виклику хуку `useState`. React очікував, що другий виклик хуку в цьому компоненті відповідає ефекту `persistForm` так само як і під час попереднього рендеру, але це більше не так. З цього моменту кожен наступний виклик хуку після того, що ми пропустили, також зміститься на один, що призведе до помилок.
121+
React не знатиме, що повернути для другого виклику хуку `useState`. React очікував, що другий виклик хуку в цьому компоненті відповідає ефекту `persistForm` так само як і під час попереднього рендеру, але це більше не так. З цього моменту кожен наступний виклик хуку після того, що ми пропустили, також зміститься на одиницю, що призведе до помилок.
122122

123-
**Ось чому хуки мають викликатися на вищому рівні наших компонентів.** Якщо ми хочемо викликати ефект за певної умови, то ми можемо розмістити цю умову *всередину* нашого хуку:
123+
**Ось чому хуки мають викликатися на найвищому рівні наших компонентів.** Якщо ми хочемо викликати ефект за певної умови, то ми можемо розмістити цю умову *всередині* нашого хуку:
124124

125125
```js
126126
useEffect(function persistForm() {
@@ -131,8 +131,8 @@ React не знатиме, що повернути для другого вик
131131
});
132132
```
133133

134-
**Зауважте, що вам не потрібно буде піклуватися про цю проблему, якщо ви додасте до вашого проекту [запропоноване правило для лінтера](https://www.npmjs.com/package/eslint-plugin-react-hooks).** Але тепер ви знаєте, *чому* хуки працюють таким чином, та які проблеми можна запобігти використовуючи це правило.
134+
**Зауважте, що вам не потрібно буде піклуватися про цю проблему, якщо ви додасте до вашого проекту [запропоноване правило для лінтера](https://www.npmjs.com/package/eslint-plugin-react-hooks).** Але тепер ви знаєте, *чому* хуки працюють таким чином, та яким проблемам можна запобігти, використовуючи це правило.
135135

136136
## Наступні кроки {#next-steps}
137137

138-
Нарешті ми можемо почати вчитися тому, [як писати користувацькі хуки](/docs/hooks-custom.html)! Хуки користувача дозволять вам комбінувати хуки впроваджені React з вашими власними абстракціями та повторно використовувати загальну логіку стану між різними компонентами.
138+
Нарешті ми можемо почати вчитися тому, [як писати користувацькі хуки](/docs/hooks-custom.html)! Хуки користувача дозволять вам комбінувати хуки, впроваджені React, з вашими власними абстракціями, та повторно використовувати одну й ту ж логіку стану в різних компонентах.

0 commit comments

Comments
 (0)