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
*`load`: A function that returns a [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)or another*thenable* (a Promise-like object with a`then` method). React will not call `load`until the first time you attempt to render the returned component. After React first calls `load`, it will wait for it to resolve, and then render the resolved value as a React component. Both the returned Promise and the Promise's resolved value will be cached, so React will not call`load`more than once. If the Promise rejects, React will `throw` the rejection reason for the nearest Error Boundary to handle.
34
+
* `load`: Функция, которая возвращает [Промис](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Promise) или другой *thenable* (объект, в котором определен метод `then`). Вызова `load` не произойдет до тех пор, пока вы не попытаетесь отрендерить возвращённый компонент. После первого вызова `load`, React будет ждать завершения выполнения команды, а затем отрендерит разрешённое значение как React-компонент. Возвращаемый промис и разрешенное значение промиса будут кэшироваться, поэтому React не будет вызывать `load` более одного раза. Если Promise отклоняется, React укажет причину в ближайшем Error Boundary.
36
35
37
-
#### Returns {/*returns*/}
36
+
#### Возвращаемое значение {/*returns*/}
38
37
39
-
`lazy`returns a React component you can render in your tree. While the code for the lazy component is still loading, attempting to render it will *suspend.*Use[`<Suspense>`](/reference/react/Suspense)to display a loading indicator while it's loading.
38
+
`lazy`возвращает React-компонент, который можно отрендерить в вашем дереве. Пока код для ленивого компонента все еще загружается, попытка его отрисовки *приостанавливается.*Используйте[`<Suspense>`](/reference/react/Suspense)для отображения индикатора загрузки во время загрузки.
40
39
41
40
---
42
41
43
-
### `load` function {/*load*/}
42
+
### Функция `load` {/*load*/}
44
43
45
-
#### Parameters {/*load-parameters*/}
44
+
#### Параметры {/*load-parameters*/}
46
45
47
-
`load`receives no parameters.
46
+
`load`не принимает параметров.
48
47
49
-
#### Returns {/*load-returns*/}
48
+
#### Возвращаемое значение {/*load-returns*/}
50
49
51
-
You need to return a [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)or some other *thenable* (a Promise-like object with a`then` method). It needs to eventually resolve to a valid React component type, such as a function, [`memo`](/reference/react/memo), or a [`forwardRef`](/reference/react/forwardRef)component.
50
+
Возвращает [Промис](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Promise)или другой *thenable* (объект, в котором определен метод`then`). В конечном итоге он вернётся к действительному React компоненту, например к функции, [`memo`](/reference/react/memo), или [`forwardRef`](/reference/react/forwardRef)компоненту.
52
51
53
52
---
54
53
55
-
## Usage {/*usage*/}
54
+
## Использование {/*usage*/}
56
55
57
-
### Lazy-loading components with Suspense {/*suspense-for-code-splitting*/}
56
+
### Ленивая загрузка компонентов с Suspense {/*suspense-for-code-splitting*/}
58
57
59
-
Usually, you import components with the static [`import`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import)declaration:
58
+
Обычно импорт компонентов происходит со статическим [`import`](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Statements/import)объявлением:
60
59
61
60
```js
62
61
importMarkdownPreviewfrom'./MarkdownPreview.js';
63
62
```
64
63
65
-
To defer loading this component's code until it's rendered for the first time, replace this import with:
64
+
Чтобы отложить загрузку кода этого компонента до его первого рендеринга, замените этот импорт на:
This code relies on [dynamic`import()`,](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import)which might require support from your bundler or framework.
72
+
Этот код опирается на [динамический`import()`,](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import)который должен поддерживаться вашим бандлером или фреймворком.
74
73
75
-
Now that your component's code loads on demand, you also need to specify what should be displayed while it is loading. You can do this by wrapping the lazy component or any of its parents into a [`<Suspense>`](/reference/react/Suspense) boundary:
74
+
Теперь, когда код вашего компонента загружается по запросу, вам также необходимо указать, что должно отображаться во время его загрузки. Это можно сделать путем оборачивания ленивого компонента или его родителя в границы [`<Suspense>`](/reference/react/Suspense):
76
75
77
76
```js {1,4}
78
77
<Suspense fallback={<Loading />}>
@@ -81,7 +80,7 @@ Now that your component's code loads on demand, you also need to specify what sh
81
80
</Suspense>
82
81
```
83
82
84
-
In this example, the code for `MarkdownPreview`won't be loaded until you attempt to render it. If`MarkdownPreview`hasn't loaded yet, `Loading` will be shown in its place. Try ticking the checkbox:
83
+
Например, код для `MarkdownPreview`не загрузится, пока его не попытаются вызвать. Если`MarkdownPreview`ещё не загрузился, на его месте отобразится `Loading`. Попробуйте поставить галочку в чекбоксе:
85
84
86
85
<Sandpack>
87
86
@@ -112,7 +111,7 @@ export default function MarkdownEditor() {
112
111
);
113
112
}
114
113
115
-
//Add a fixed delay so you can see the loading state
114
+
//Добавьте фиксированную задержку, чтобы увидеть загрузку
116
115
functiondelayForDemo(promise) {
117
116
returnnewPromise(resolve=> {
118
117
setTimeout(resolve, 2000);
@@ -175,34 +174,34 @@ body {
175
174
176
175
</Sandpack>
177
176
178
-
This demo loads with an artificial delay. The next time you untick and tick the checkbox, `Preview`will be cached, so there will be no loading state. To see the loading state again, click "Reset" on the sandbox.
177
+
Это демо загрузится с искусственной задержкой. В следующий раз когда вы снимите и поставите галочку, `Preview`будет закэшировано, загрузки не будет. Чтобы снова увидеть загрузку, нужно нажать "Reset" в сандбоксе.
179
178
180
-
[Learn more about managing loading states with Suspense.](/reference/react/Suspense)
179
+
[Узнать об управлении состояниями загрузки с помощью Suspense.](/reference/react/Suspense)
181
180
182
181
---
183
182
184
-
## Troubleshooting {/*troubleshooting*/}
183
+
## Траблшутинг {/*troubleshooting*/}
185
184
186
-
### My `lazy`component's state gets reset unexpectedly {/*my-lazy-components-state-gets-reset-unexpectedly*/}
185
+
### Состояние моего `lazy`компонента неожиданно сбрасывается {/*my-lazy-components-state-gets-reset-unexpectedly*/}
187
186
188
-
Do not declare `lazy`components *inside* other components:
187
+
Не объявляйте `lazy`компоненты *внутри* других компонентов:
189
188
190
189
```js {4-5}
191
190
import { lazy } from'react';
192
191
193
192
functionEditor() {
194
-
// 🔴 Bad: This will cause all state to be reset on re-renders
193
+
// 🔴 Плохо: Все состояния сбросятся при ре-рендере
0 commit comments