Skip to content

Commit 2c5936e

Browse files
committed
translate fix
1 parent d175a4c commit 2c5936e

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

src/content/reference/react/useInsertionEffect.md

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,21 +44,31 @@ function useCSS(rule) {
4444
4545
#### Параметры {/*parameters*/}
4646
47+
<<<<<<< HEAD
4748
* `setup`: Функция с логикой вашего эффекта. Ваша setup функция, опционально, может возвращать функцию *очистки*. Перед тем, как ваш компонент добавится в DOM, реакт запустит вашу setup функцию. После каждого повторного рендеринга с измененными зависимостями, реакт запустит функцию очистки (если вы ее предоставили) со старыми заничениями, а затем запустит вашу setup функцию с новыми значениями. Перед тем как ваш компонент удалится из DOM, реакт запустит функцию очистки.
49+
=======
50+
* `setup`: Функция с логикой вашего эффекта. Ваша setup-функция, опционально, может возвращать функцию *очистки*. Перед тем, как ваш компонент добавится в DOM, React запустит вашу setup-функцию. После каждого повторного рендера с изменёнными зависимостями, React запустит функцию очистки (если вы её предоставили) со старыми значениями, а затем запустит вашу setup-функцию с новыми значениями. Перед тем как ваш компонент удалится из DOM, React запустит функцию очистки.
51+
>>>>>>> 88e12cf9 (translate fix)
4852
49-
* `dependencies`: Список всех реактивных значений, на которые ссылается код функции `setup`. К реактивным значениям относятся реквизиты, состояние, а также все переменные и функции, объявленные непосредственно в теле компонента. Если ваш линтер [настроен для использования с React](/learn/editor-setup#linting), он проверит, что каждое реактивное значение правильно указано как зависимость. Список зависимостей должен иметь постоянное количество элементов и быть написан inline по типу `[dep1, dep2, dep3]`. React будет сравнивать каждую зависимость с предыдущим значением, используя алгоритм сравнения [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is). Если не указать зависимости вообще, то эффект запустится заново после каждого повторного рендеринга компонента.
53+
* `dependencies`: Список всех реактивных значений, на которые ссылается код функции `setup`. К реактивным значениям относятся пропсы, состояние, а также все переменные и функции, объявленные непосредственно в теле компонента. Если ваш линтер [настроен для использования с React](/learn/editor-setup#linting), он проверит, что каждое реактивное значение правильно указано как зависимость. Список зависимостей должен иметь постоянное количество элементов и быть записан примерно так: `[dep1, dep2, dep3]`. React будет сравнивать каждую зависимость с предыдущим значением, используя алгоритм сравнения [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is). Если не указать зависимости вообще, то эффект будет запускаться заново после каждого повторного рендера компонента.
5054
5155
#### Возвращаемое значение {/*returns*/}
5256
5357
`useInsertionEffect` возвращает `undefined`.
5458
5559
#### Предостережения {/*caveats*/}
5660
57-
* Эффекты выполняются только на клиенте. Они не выполняются во время серверного рендеринга.
61+
* Эффекты выполняются только на клиенте. Они не выполняются во время серверного рендера.
5862
* Вы не можете обновить состояние изнутри `useInsertionEffect`.
63+
<<<<<<< HEAD
5964
* К моменту выполнения `useInsertionEffect` ссылки еще не прикреплены, а DOM еще не обновлен.
6065
* `useInsertionEffect` может выполняться как до, так и после обновления DOM. Не следует полагаться на то, что DOM будет обновлен в какой-то конкретный момент.
6166
* В отличие от других типов эффектов, которые запускают очистку для каждого эффекта, а затем установку для каждого эффекта, `useInsertionEffect` будет запускать очистку и установку поочерёдно для каждого компонента. Это приводит к "переплетению" функций очистки и установки.
67+
=======
68+
* К моменту выполнения `useInsertionEffect` ссылки ещё не прикреплены, а DOM ещё не обновлён.
69+
70+
---
71+
>>>>>>> 88e12cf9 (translate fix)
6272
6373
## Использование {/*usage*/}
6474
@@ -67,10 +77,10 @@ function useCSS(rule) {
6777
Традиционно для стилизации компонентов React используется обычный CSS.
6878
6979
```js
70-
// В вашем JS файле:
80+
// В вашем JS-файле:
7181
<button className="success" />
7282

73-
// В вашем CSS файле:
83+
// В вашем CSS-файле:
7484
.success { color: green; }
7585
```
7686
Некоторые команды предпочитают создавать стили непосредственно в коде JavaScript, вместо того чтобы писать файлы CSS. Обычно это требует использования библиотеки или инструмента CSS-in-JS. Существует три распространённых подхода к CSS-in-JS:
@@ -79,7 +89,7 @@ function useCSS(rule) {
7989
2. Инлайн стили, например, `<div style={{ opacity: 1 }}>`
8090
3. Внедрение тегов `<style>` во время выполнения.
8191
82-
Если вы используете CSS-in-JS, мы рекомендуем комбинацию первых двух подходов (файлы CSS для статических стилей, инлайн стили для динамических стилей). Мы не рекомендуем внедрение тегов `<style>` во время выполнения по двум причинам:
92+
Если вы используете CSS-in-JS, мы рекомендуем комбинацию первых двух подходов (файлы CSS для статических стилей, встроенные стили для динамических стилей). Мы не рекомендуем внедрение тегов `<style>` во время выполнения по двум причинам:
8393
8494
1. Внедрение во время выполнения заставляет браузер пересчитывать стили гораздо чаще.
8595
2. Внедрение может быть очень медленным, если это происходит в неподходящее время жизненного цикла React.
@@ -109,7 +119,7 @@ function Button() {
109119
}
110120
```
111121
112-
Схожим образом `useEffect`, `useInsertionEffect` не запускается на сервере. Если вам нужно собрать информацию о том, какие CSS правила были использованы на сервере, вы можете сделать это во время рендеринга:
122+
Схожим образом `useEffect`, `useInsertionEffect` не запускается на сервере. Если вам нужно собрать информацию о том, какие CSS-правила были использованы на сервере, вы можете сделать это во время рендера:
113123
114124
```js {1,4-6}
115125
let collectedRulesSet = new Set();
@@ -129,10 +139,10 @@ function useCSS(rule) {
129139

130140
<DeepDive>
131141

132-
#### Чем это лучше, чем внедрение стилей во время рендеринга или использование useLayoutEffect? {/*how-is-this-better-than-injecting-styles-during-rendering-or-uselayouteffect*/}
142+
#### Почему это лучше чем внедрение стилей во время рендера или использование useLayoutEffect? {/*how-is-this-better-than-injecting-styles-during-rendering-or-uselayouteffect*/}
133143

134144
Если вы вставляете стили во время рендеринга, и React обрабатывает [неблокирующее обновление,](/reference/react/useTransition#marking-a-state-update-as-a-non-blocking-transition) браузер будет пересчитывать стили на каждом кадре во время рендеринга дерева компонентов, что может быть **чрезвычайно медленным.**
135145

136-
`useInsertionEffect` лучше, чем вставка стилей во время [`useLayoutEffect`](/reference/react/useLayoutEffect) или [`useEffect`](/reference/react/useEffect) потому что это гарантирует, что к тому времени, как другие эффекты запускаются в ваших компонентах, теги `<style>` уже будут вставлены. В противном случае расчеты компоновки в обычных эффектах будут неверными из-за устаревших стилей.
146+
`useInsertionEffect` лучше, чем вставка стилей во время [`useLayoutEffect`](/reference/react/useLayoutEffect) или [`useEffect`](/reference/react/useEffect) потому что это гарантирует, что к тому времени, как другие эффекты запускаются в ваших компонентах, теги `<style>` уже будут вставлены. В противном случае расчёты компоновки в обычных эффектах будут неверными из-за устаревших стилей.
137147

138148
</DeepDive>

0 commit comments

Comments
 (0)