Skip to content

Translate Concurrent Mode API Reference (concurrent-mode-reference.md) #463

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 33 commits into from
Feb 6, 2020
Merged
Show file tree
Hide file tree
Changes from 21 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
2229327
Translate Concurrent Mode API Reference
AlLevykin Nov 23, 2019
6caf852
Merge pull request #12 from reactjs/master
AlLevykin Feb 1, 2020
fc3d56c
Merge branch 'master' into AlLevykin-concurrent-mode-reference
AlLevykin Feb 1, 2020
a57f6c9
Translate Concurrent Mode API Reference
AlLevykin Feb 1, 2020
ac3a8a7
Update content/docs/concurrent-mode-reference.md
AlLevykin Feb 1, 2020
eefd659
Update content/docs/concurrent-mode-reference.md
AlLevykin Feb 1, 2020
2270a7c
Update content/docs/concurrent-mode-reference.md
AlLevykin Feb 1, 2020
25c1325
Update content/docs/concurrent-mode-reference.md
AlLevykin Feb 1, 2020
2b2a2c1
Update content/docs/concurrent-mode-reference.md
AlLevykin Feb 1, 2020
95b54ee
Update content/docs/concurrent-mode-reference.md
AlLevykin Feb 1, 2020
6f87b4b
Update content/docs/concurrent-mode-reference.md
AlLevykin Feb 1, 2020
3222962
Update content/docs/concurrent-mode-reference.md
AlLevykin Feb 1, 2020
6193a25
Update content/docs/concurrent-mode-reference.md
AlLevykin Feb 1, 2020
e694e2e
Update content/docs/concurrent-mode-reference.md
AlLevykin Feb 1, 2020
c787367
Update content/docs/concurrent-mode-reference.md
AlLevykin Feb 1, 2020
8bc1b3b
Update content/docs/concurrent-mode-reference.md
AlLevykin Feb 1, 2020
f0ce2ee
Update content/docs/concurrent-mode-reference.md
AlLevykin Feb 1, 2020
83de61c
Update content/docs/concurrent-mode-reference.md
AlLevykin Feb 1, 2020
8cf7de5
Update content/docs/concurrent-mode-reference.md
AlLevykin Feb 1, 2020
add60af
Update content/docs/concurrent-mode-reference.md
AlLevykin Feb 1, 2020
9b2219f
Update concurrent-mode-reference.md
AlLevykin Feb 1, 2020
0fa9a01
Update content/docs/concurrent-mode-reference.md
AlLevykin Feb 2, 2020
4e9d6c5
Update content/docs/concurrent-mode-reference.md
AlLevykin Feb 2, 2020
0143094
Update content/docs/concurrent-mode-reference.md
AlLevykin Feb 2, 2020
af1d1a0
Update content/docs/concurrent-mode-reference.md
AlLevykin Feb 2, 2020
c7f9dda
Update content/docs/concurrent-mode-reference.md
AlLevykin Feb 2, 2020
ee7ad32
Update content/docs/concurrent-mode-reference.md
AlLevykin Feb 2, 2020
d22a835
Update content/docs/concurrent-mode-reference.md
AlLevykin Feb 2, 2020
e25b208
Loading -> Загрузка
AlLevykin Feb 2, 2020
fa42e9e
запасное состояние -> запасной интерфейс
AlLevykin Feb 2, 2020
db464ed
Описание useDeferredValue
AlLevykin Feb 2, 2020
4297c69
Описание useDeferredValue
AlLevykin Feb 2, 2020
18e15a7
Корректировка пустых строк
AlLevykin Feb 2, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
106 changes: 53 additions & 53 deletions content/docs/concurrent-mode-reference.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
id: concurrent-mode-reference
title: Concurrent Mode API Reference (Experimental)
title: Справочник API конкурентного режима (экспериментально)
permalink: docs/concurrent-mode-reference.html
prev: concurrent-mode-adoption.html
---
Expand All @@ -14,52 +14,52 @@ prev: concurrent-mode-adoption.html

<div class="scary">

>Caution:
>Внимание:
>
>This page describes **experimental features that are [not yet available](/docs/concurrent-mode-adoption.html) in a stable release**. Don't rely on experimental builds of React in production apps. These features may change significantly and without a warning before they become a part of React.
>На странице описаны **экспериментальные функции, которых еще нет в стабильной версии**. Не используйте экспериментальные сборки React в продакшен-приложениях. Эти функции могут значительно измениться без предупреждения перед тем, как попасть в React.
>
>This documentation is aimed at early adopters and people who are curious. **If you're new to React, don't worry about these features** -- you don't need to learn them right now.
>Эта документация предназначена для ранних пользователей и интересующихся. Если вы новичок в React, не беспокойтесь об этих возможностях -- вам не нужно изучать их прямо сейчас.

</div>

This page is an API reference for the React [Concurrent Mode](/docs/concurrent-mode-intro.html). If you're looking for a guided introduction instead, check out [Concurrent UI Patterns](/docs/concurrent-mode-patterns.html).
Страница содержит справочник API [конкурентного режима](/docs/concurrent-mode-intro.html) React. Если вам нужно вводное руководство по этому режиму, прочитайте о [паттернах конкурентного UI](/docs/concurrent-mode-patterns.html).

**Note: This is a Community Preview and not the final stable version. There will likely be future changes to these APIs. Use at your own risk!**
**Примечание: это не стабильный релиз, а предварительная версия для комьюнити. Скорее всего, в будущем API изменится. Используйте его на свой страх и риск!**

- [Enabling Concurrent Mode](#concurrent-mode)
- [Включение конкурентного режима](#concurrent-mode)
- [`createRoot`](#createroot)
- [`createBlockingRoot`](#createblockingroot)
- [Suspense](#suspense)
- [API задержек](#suspense)
- [`Suspense`](#suspensecomponent)
- [`SuspenseList`](#suspenselist)
- [`useTransition`](#usetransition)
- [`useDeferredValue`](#usedeferredvalue)

## Enabling Concurrent Mode {#concurrent-mode}
## Включение конкурентного режима {#concurrent-mode}

### `createRoot` {#createroot}

```js
ReactDOM.createRoot(rootNode).render(<App />);
```

Replaces `ReactDOM.render(<App />, rootNode)` and enables Concurrent Mode.
Заменяет `ReactDOM.render(<App />, rootNode)` и включает конкурентный режим.

For more information on Concurrent Mode, check out the [Concurrent Mode documentation.](/docs/concurrent-mode-intro.html)
Дополнительную информацию можно узнать в [документации конкурентного режима](/docs/concurrent-mode-intro.html).

### `createBlockingRoot` {#createblockingroot}

```js
ReactDOM.createBlockingRoot(rootNode).render(<App />)
```

Replaces `ReactDOM.render(<App />, rootNode)` and enables [Blocking Mode](/docs/concurrent-mode-adoption.html#migration-step-blocking-mode).
Заменяет `ReactDOM.render(<App />, rootNode)` и включает [блокирующий режим](/docs/concurrent-mode-adoption.html#migration-step-blocking-mode).

Opting into Concurrent Mode introduces semantic changes to how React works. This means that you can't use Concurrent Mode in just a few components. Because of this, some apps may not be able to migrate directly to Concurrent Mode.
Для реализации конкурентного режима решено сделать семантические изменения в работе React. Это значит, что вы не сможете использовать конкурентный режим лишь для некоторых компонентов проекта. И как следствие, не все приложения можно будет напрямую перевести на конкурентный режим.

Blocking Mode only contains a small subset of Concurrent Mode features and is intended as an intermediary migration step for apps that are unable to migrate directly.
Блокирующий режим содержит небольшую часть возможностей конкурентного режима. Он предназначен в качестве промежуточного этапа для приложений, которые нельзя мигрировать напрямую.

## Suspense API {#suspense}
## API задержек {#suspense}

### `Suspense` {#suspensecomponent}

Expand All @@ -70,13 +70,13 @@ Blocking Mode only contains a small subset of Concurrent Mode features and is in
</Suspense>
```

`Suspense` lets your components "wait" for something before they can render, showing a fallback while waiting.
`Suspense` даёт возможность вашим компонентам "ждать", отображая запасное состояние, прежде чем они будут отрендерены.

In this example, `ProfileDetails` is waiting for an asynchronous API call to fetch some data. While we wait for `ProfileDetails` and `ProfilePhoto`, we will show the `Loading...` fallback instead. It is important to note that until all children inside `<Suspense>` has loaded, we will continue to show the fallback.
В примере `ProfileDetails` получают данные с помощью асинхронного вызова. Во время ожидания загрузки `ProfileDetails` и `ProfilePhoto`, отображается запасной заголовок `Loading...`. Важно отметить, что до тех пор, пока все дочерние компоненты `<Suspense>` не отрендерены, мы будем видеть запасное состояние.

`Suspense` takes two props:
* **fallback** takes a loading indicator. The fallback is shown until all of the children of the `Suspense` component have finished rendering.
* **unstable_avoidThisFallback** takes a boolean. It tells React whether to "skip" revealing this boundary during the initial load. This API will likely be removed in a future release.
`Suspense` принимает два пропса:
* **fallback** принимает индикатор загрузки. Запасное состояние отображается до тех пор, пока не завершится рендер всех дочерних компонентов `Suspense`.
* **unstable_avoidThisFallback** принимает логическое значение. Оно сообщает React, что не нужно отображать запасное состояние при первоначальной загрузке. Скорее всего, этот API будет исключён в будущих релизах.

### `<SuspenseList>` {#suspenselist}

Expand All @@ -95,19 +95,19 @@ In this example, `ProfileDetails` is waiting for an asynchronous API call to fet
</SuspenseList>
```

`SuspenseList` helps coordinate many components that can suspend by orchestrating the order in which these components are revealed to the user.
`SuspenseList` помогает скоординировать загрузку множества компонентов с помощью определения порядка, в котором они будут показываться пользователю.

When multiple components need to fetch data, this data may arrive in an unpredictable order. However, if you wrap these items in a `SuspenseList`, React will not show an item in the list until previous items have been displayed (this behavior is adjustable).
Бывают ситуации, когда нескольким компонентам требуется получить данные, последовательность загрузки которых нельзя предсказать заранее. Если обернуть такие компоненты в `SuspenseList`, то React не покажет компонент из списка до тех пор, пока не будет отображён предыдущий (этим поведением можно управлять).

`SuspenseList` takes two props:
* **revealOrder (forwards, backwards, together)** defines the order in which the `SuspenseList` children should be revealed.
* `together` reveals *all* of them when they're ready instead of one by one.
* **tail (collapsed, hidden)** dictates how unloaded items in a `SuspenseList` is shown.
* By default, `SuspenseList` will show all fallbacks in the list.
* `collapsed` shows only the next fallback in the list.
* `hidden` doesn't show any unloaded items.
`SuspenseList` принимает два пропса:
* **revealOrder (forwards, backwards, together)** определяет последовательность, в которой отображаются дочерние компоненты `SuspenseList`.
* `together` позволяет отобразить *все* компоненты одновременно вместо того, чтобы показывать их последовательно.
* **tail (collapsed, hidden)** определяет, как отображаются компоненты из `SuspenseList`, которые ещё не загружены.
* По умолчанию, `SuspenseList` отображает запасные состояния для всех компонентов в списке.
* `collapsed` показывает запасное состояние только для компонента, который будет загружен следующим.
* `hidden` не показывает компоненты, которые ещё не загружены.

Note that `SuspenseList` only operates on the closest `Suspense` and `SuspenseList` components below it. It does not search for boundaries deeper than one level. However, it is possible to nest multiple `SuspenseList` components in each other to build grids.
Учтите, что `SuspenseList` управляет только ближайшими вложенными компонентами `Suspense` и `SuspenseList`. Поиск осуществляеется не более, чем на один уровень вниз, но при этом можно делать многоуровневые вложения `SuspenseList` для построения более сложной разметки.

### `useTransition` {#usetransition}

Expand All @@ -117,13 +117,14 @@ const SUSPENSE_CONFIG = { timeoutMs: 2000 };
const [startTransition, isPending] = useTransition(SUSPENSE_CONFIG);
```

`useTransition` allows components to avoid undesirable loading states by waiting for content to load before **transitioning to the next screen**. It also allows components to defer slower, data fetching updates until subsequent renders so that more crucial updates can be rendered immediately.
`useTransition` позволяет не отображать состояние загрузки, когда контент обновляется перед **переходом к следующему экрану**. Это также позволяет компонентам так откладывать более медленные обновления выборки данных до последующих рендеров, что более важные обновления могут быть выполнены немедленно.

The `useTransition` hook returns two values in an array.
* `startTransition` is a function that takes a callback. We can use it to tell React which state we want to defer.
* `isPending` is a boolean. It's React's way of informing us whether we're waiting for the transition to finish.
Хук `useTransition` возвращает массив из двух элементов.

**If some state update causes a component to suspend, that state update should be wrapped in a transition.**
* `startTransition` -- это функция, которая получает колбэк. Её используют, чтобы сообщить React какое состояние нам нужно отложить.
* `isPending` -- это логическое значение, которое позволяет React проинформировать нас, ожидаем ли мы в данный момент окончания перехода.

**Если обновление состояния компонента является причиной задержки, то его нужно обернуть по паттерну перехода.**

```js
const SUSPENSE_CONFIG = { timeoutMs: 2000 };
Expand Down Expand Up @@ -153,62 +154,61 @@ function App() {
}
```

In this code, we've wrapped our data fetching with `startTransition`. This allows us to start fetching the profile data right away, while deferring the render of the next profile page and its associated `Spinner` for 2 seconds (the time shown in `timeoutMs`).
В этом примере мы обернули получение данных в функцию `startTransition`. Это позволяет сразу загружать данные профиля пользователя, откладывая рендер страницы и компонента `Spinner` на 2 секунды (время указано в `timeoutMs`).

The `isPending` boolean lets React know that our component is transitioning, so we are able to let the user know this by showing some loading text on the previous profile page.
Логическое значение `isPending` показывает, что наш компонент в состоянии перехода. Это позволяет, находясь на предыдущем экране, показать пользователю сообщение о загрузке.

**For an in-depth look at transitions, you can read [Concurrent UI Patterns](/docs/concurrent-mode-patterns.html#transitions).**
**Паттерн перехода более подробно рассматривается в разделе [Паттерны конкурентного UI](/docs/concurrent-mode-patterns.html#transitions).**

#### useTransition Config {#usetransition-config}
#### Конфигурирование useTransition {#usetransition-config}

```js
const SUSPENSE_CONFIG = { timeoutMs: 2000 };
```

`useTransition` accepts an **optional Suspense Config** with a `timeoutMs`. This timeout (in milliseconds) tells React how long to wait before showing the next state (the new Profile Page in the above example).

**Note: We recommend that you share Suspense Config between different modules.**
Хук `useTransition` принимает **объект настройки задержек** со свойством `timeoutMs`. Этот таймаут, заданный в миллисекундах, указывает React сколько времени нужно ждать появления следующего состояния, например, как это было сделано в программе выше.

**Примечание: мы рекомендуем делать объект настройки задержек глобальным для всех модулей проекта.**

### `useDeferredValue` {#usedeferredvalue}

```js
const deferredValue = useDeferredValue(value, { timeoutMs: 2000 });
```

Returns a deferred version of the value that may "lag behind" it for at most `timeoutMs`.
Возвращает отложенную версию значения, которое может «отставать» от него не более чем на `timeoutMs`.

This is commonly used to keep the interface responsive when you have something that renders immediately based on user input and something that needs to wait for a data fetch.
Это обычно используется для создания отзывчивого интерфейса, когда нужно что-то немедленно отрендерить на основе пользовательского ввода и что-то при этом ожидает загрузки данных.

A good example of this is a text input.
Хорошим примером является ввод текста.

```js
function App() {
const [text, setText] = useState("hello");
const deferredText = useDeferredValue(text, { timeoutMs: 2000 });
const deferredText = useDeferredValue(text, { timeoutMs: 2000 });

return (
<div className="App">
{/* Keep passing the current text to the input */}
{/* При вводе текста ... */}
<input value={text} onChange={handleChange} />
...
{/* But the list is allowed to "lag behind" when necessary */}
{/* ... в случае "зависания" можно показать список со значением ожидания */}
<MySlowList text={deferredText} />
</div>
);
}
```

This allows us to start showing the new text for the `input` immediately, which allows the webpage to feel responsive. Meanwhile, `MySlowList` "lag behind" for up to 2 seconds according to the `timeoutMs` before updating, allowing it to render with the current text in the background.
Это позволяет нам немедленно начать отображать новый текст для `input`, что позволяет странице чувствовать себя отзывчивой. Между тем, `MySlowList` "отстает" на 2 секунды в соответствии с` timeoutMs` перед обновлением, что позволяет выполнять рендеринг с текущим текстом в фоновом режиме.```

**For an in-depth look at deferring values, you can read [Concurrent UI Patterns](/docs/concurrent-mode-patterns.html#deferring-a-value).**
**Паттерн ожидания значений более подробно рассматривается в разделе [Паттерны конкурентного UI](/docs/concurrent-mode-patterns.html#deferring-a-value).**

#### useDeferredValue Config {#usedeferredvalue-config}
#### Конфигурирование useDeferredValue {#usedeferredvalue-config}

```js
const SUSPENSE_CONFIG = { timeoutMs: 2000 };
```

`useDeferredValue` accepts an **optional Suspense Config** with a `timeoutMs`. This timeout (in milliseconds) tells React how long the deferred value is allowed to lag behind.
`useDeferredValue` принимает **объект настройки задержек** со свойством `timeoutMs`. Этот таймаут (в миллисекундах) сообщает React, на сколько долго отложенное значение может отставать.

React will always try to use a shorter lag when network and device allows it.
React будет пытаться использовать более короткую задержку, когда сеть и устройство это позволяют.
Loading