-
Notifications
You must be signed in to change notification settings - Fork 388
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
Add Russian translation for synchronizing-with-effects page #988
base: main
Are you sure you want to change the base?
Add Russian translation for synchronizing-with-effects page #988
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎ 1 Skipped Deployment
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Спасибо, отличный перевод!
Предложил обновлённые ссылки на русскоязычные статьи mdn и ещё несколько повторяющихся комментариев.
|
||
- **Event handlers** (introduced in [Adding Interactivity](/learn/adding-interactivity)) are nested functions inside your components that *do* things rather than just calculate them. An event handler might update an input field, submit an HTTP POST request to buy a product, or navigate the user to another screen. Event handlers contain ["side effects"](https://en.wikipedia.org/wiki/Side_effect_(computer_science)) (they change the program's state) caused by a specific user action (for example, a button click or typing). | ||
- **Обработчики событий** (подробнее [Добавление интерактивности](/learn/adding-interactivity)) — это вложенные функции внутри ваших компонентов, которые *выполняют действия*, а не просто их вычисляют. Обработчики событий могут обновлять поля ввода, отправлять HTTP POST-запросы для покупки продукта или перенаправлять пользователя на другой экран. Обработчики событий содержат ["побочные эффекты"](https://en.wikipedia.org/wiki/Side_effect_(computer_science)), вызванные конкретными действиями пользователя (например, клик по кнопке или набор текста). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- **Обработчики событий** (подробнее [Добавление интерактивности](/learn/adding-interactivity)) — это вложенные функции внутри ваших компонентов, которые *выполняют действия*, а не просто их вычисляют. Обработчики событий могут обновлять поля ввода, отправлять HTTP POST-запросы для покупки продукта или перенаправлять пользователя на другой экран. Обработчики событий содержат ["побочные эффекты"](https://en.wikipedia.org/wiki/Side_effect_(computer_science)), вызванные конкретными действиями пользователя (например, клик по кнопке или набор текста). | |
- **Обработчики событий** (подробнее [Добавление интерактивности](/learn/adding-interactivity)) — это вложенные функции внутри ваших компонентов, которые *выполняют действия*, а не просто их вычисляют. Обработчики событий могут обновлять поля ввода, отправлять HTTP POST-запросы для покупки продукта или перенаправлять пользователя на другой экран. Обработчики событий содержат ["побочные эффекты"](https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B1%D0%BE%D1%87%D0%BD%D1%8B%D0%B9_%D1%8D%D1%84%D1%84%D0%B5%D0%BA%D1%82_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)), вызванные конкретными действиями пользователя (например, клик по кнопке или набор текста). |
можем дать ссылку на русскоязычную статью
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Исправила
|
||
<Note> | ||
|
||
Here and later in this text, capitalized "Effect" refers to the React-specific definition above, i.e. a side effect caused by rendering. To refer to the broader programming concept, we'll say "side effect". | ||
Здесь и далее в тексте «Эффект», написанный с заглавной буквы, относится к приведенному выше определению, специфичному для React, то есть к побочному эффекту, вызванному рендерингом. Чтобы отличать его от общепрограммного концепта, мы будем называть последний «побочные эффекты». |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Здесь и далее в тексте «Эффект», написанный с заглавной буквы, относится к приведенному выше определению, специфичному для React, то есть к побочному эффекту, вызванному рендерингом. Чтобы отличать его от общепрограммного концепта, мы будем называть последний «побочные эффекты». | |
Здесь и далее в тексте «Эффект», написанный с заглавной буквы, относится к приведенному выше определению, специфичному для React, то есть к побочному эффекту, вызванному рендерингом. Чтобы отличать его от общепрограммного концепта, мы будем называть последний «побочные эффекты». |
"общепрограммного" лучше бы заменить на что-то или перефразировать, можно использовать концепт информатики/программирования
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Исправила: «Чтобы отличать его от концепта, применимого в программировании в целом, мы будем называть последний «побочные эффекты». »
2. **Specify the Effect dependencies.** Most Effects should only re-run *when needed* rather than after every render. For example, a fade-in animation should only trigger when a component appears. Connecting and disconnecting to a chat room should only happen when the component appears and disappears, or when the chat room changes. You will learn how to control this by specifying *dependencies.* | ||
3. **Add cleanup if needed.** Some Effects need to specify how to stop, undo, or clean up whatever they were doing. For example, "connect" needs "disconnect", "subscribe" needs "unsubscribe", and "fetch" needs either "cancel" or "ignore". You will learn how to do this by returning a *cleanup function*. | ||
1. **Объявите Эффект.** По умолчанию Эффект будет запускаться после каждой фазы [фиксации](/learn/render-and-commit). | ||
2. **Укажите зависимости Эффекта.** Большинство Эффектов должны перезапускаться только *когда это необходимо*, а не при каждом рендере. Например, анимация должна срабатывать только когда компонент появляется. Подключение к чату или отключение от него должно происходить только когда компонент появляется или исчезает, или когда чат меняется. Вы узнаете, как контролировать это устанавливая *зависимости*. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
В нескольких случаях в этом фрагменте запятая ставится перед усилительной частицей тогда
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Спасибо, узнала новое. Исправила.
|
||
```js | ||
<VideoPlayer isPlaying={isPlaying} />; | ||
``` | ||
|
||
Your custom `VideoPlayer` component renders the built-in browser [`<video>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video) tag: | ||
Ваш компонент `VideoPlayer` рендерит встроенный в браузер тег [`<video>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ваш компонент `VideoPlayer` рендерит встроенный в браузер тег [`<video>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video): | |
Ваш компонент `VideoPlayer` рендерит встроенный в браузер тег [`<video>`](https://developer.mozilla.org/ru/docs/Web/HTML/Element/video): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Исправила
|
||
Effects should usually synchronize your components with an *external* system. If there's no external system and you only want to adjust some state based on other state, [you might not need an Effect.](/learn/you-might-not-need-an-effect) | ||
Эффекты обычно должны синхронизировать ваши компоненты с *внешней* системой. Если это не внешняя система и вы только хотите обновить одно состояние на основе другого состояния, [возможно, вам не нужен Эффект.](/learn/you-might-not-need-an-effect) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Эффекты обычно должны синхронизировать ваши компоненты с *внешней* системой. Если это не внешняя система и вы только хотите обновить одно состояние на основе другого состояния, [возможно, вам не нужен Эффект.](/learn/you-might-not-need-an-effect) | |
Эффекты обычно должны синхронизировать ваши компоненты с *внешней* системой. Если это не внешняя система, и вы только хотите обновить одно состояние на основе другого состояния, [возможно, вам не нужен Эффект.](/learn/you-might-not-need-an-effect) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Поправила
|
||
**In production, there will only be one request.** If the second request in development is bothering you, the best approach is to use a solution that deduplicates requests and caches their responses between components: | ||
**В продакшн-режиме будет только один запрос.** Если второй запрос в процессе разработки вас беспокоит, лучшим подходом будет использование решения, которое устраняет дублирование запросов и кэширует их ответы между компонентами: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
**В продакшн-режиме будет только один запрос.** Если второй запрос в процессе разработки вас беспокоит, лучшим подходом будет использование решения, которое устраняет дублирование запросов и кэширует их ответы между компонентами: | |
**В продакшен-режиме будет только один запрос.** Если второй запрос в процессе разработки вас беспокоит, лучшим подходом будет использование решения, которое устраняет дублирование запросов и кэширует их ответы между компонентами: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Исправила
|
||
In addition to ignoring the result of an outdated API call, you can also use [`AbortController`](https://developer.mozilla.org/en-US/docs/Web/API/AbortController) to cancel the requests that are no longer needed. However, by itself this is not enough to protect against race conditions. More asynchronous steps could be chained after the fetch, so using an explicit flag like `ignore` is the most reliable way to fix this type of problem. | ||
В дополнение к игнорированию результата устаревшего API-запроса, вы также можете использовать [`AbortController`](https://developer.mozilla.org/en-US/docs/Web/API/AbortController) для отмены запросов, которые больше не нужны. Однако этого недостаточно, чтобы защититься от состояний гонки. После получения данных могут быть связаны дополнительные асинхронные шаги, поэтому использование явного флага, такого как `ignore`, является самым надежным способом решения этой проблемы. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
В дополнение к игнорированию результата устаревшего API-запроса, вы также можете использовать [`AbortController`](https://developer.mozilla.org/en-US/docs/Web/API/AbortController) для отмены запросов, которые больше не нужны. Однако этого недостаточно, чтобы защититься от состояний гонки. После получения данных могут быть связаны дополнительные асинхронные шаги, поэтому использование явного флага, такого как `ignore`, является самым надежным способом решения этой проблемы. | |
В дополнение к игнорированию результата устаревшего API-запроса, вы также можете использовать [`AbortController`](https://developer.mozilla.org/ru/docs/Web/API/AbortController) для отмены запросов, которые больше не нужны. Однако этого недостаточно, чтобы защититься от состояний гонки. После получения данных могут быть связаны дополнительные асинхронные шаги, поэтому использование явного флага, такого как `ignore`, является самым надежным способом решения этой проблемы. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Исправила
|
||
This is why you see Bob's bio even though Taylor is selected. Bugs like this are called [race conditions](https://en.wikipedia.org/wiki/Race_condition) because two asynchronous operations are "racing" with each other, and they might arrive in an unexpected order. | ||
Вот почему вы видите биографию Боба, даже когда выбрана Тейлор. Ошибки такого рода называются [гонки состояний](https://en.wikipedia.org/wiki/Race_condition), потому что две асинхронные операции "соревнуются" друг с другом, и они могут завершиться в неожиданном порядке. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Вот почему вы видите биографию Боба, даже когда выбрана Тейлор. Ошибки такого рода называются [гонки состояний](https://en.wikipedia.org/wiki/Race_condition), потому что две асинхронные операции "соревнуются" друг с другом, и они могут завершиться в неожиданном порядке. | |
Вот почему вы видите биографию Боба, даже когда выбрана Тейлор. Ошибки такого рода называются [гонки состояний](https://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D0%B5_%D0%B3%D0%BE%D0%BD%D0%BA%D0%B8), потому что две асинхронные операции "соревнуются" друг с другом, и они могут завершиться в неожиданном порядке. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Исправила
|
||
To fix this code, save the interval ID returned by `setInterval`, and implement a cleanup function with [`clearInterval`](https://developer.mozilla.org/en-US/docs/Web/API/clearInterval): | ||
Чтобы исправить этот код, сохраните идентификатор интервала, возвращаемый `setInterval`, и реализуйте функцию очистки с помощью [`clearInterval`](https://developer.mozilla.org/en-US/docs/Web/API/clearInterval): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Чтобы исправить этот код, сохраните идентификатор интервала, возвращаемый `setInterval`, и реализуйте функцию очистки с помощью [`clearInterval`](https://developer.mozilla.org/en-US/docs/Web/API/clearInterval): | |
Чтобы исправить этот код, сохраните идентификатор интервала, возвращаемый `setInterval`, и реализуйте функцию очистки с помощью [`clearInterval`](https://developer.mozilla.org/ru/docs/Web/API/clearInterval): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Тоже, к сожалению, страница не переведена на русский, ссылку оставила на оригинальную статью. Если нужна какая-то пометка в тексте, что эта статья на английском, я добавлю.
|
||
<Hint> | ||
|
||
Keep in mind that `setInterval` returns an interval ID, which you can pass to [`clearInterval`](https://developer.mozilla.org/en-US/docs/Web/API/clearInterval) to stop the interval. | ||
Имейте в виду, что `setInterval` возвращает идентификатор интервала, который вы можете передать в [`clearInterval`](https://developer.mozilla.org/en-US/docs/Web/API/clearInterval), чтобы остановить интервал. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Имейте в виду, что `setInterval` возвращает идентификатор интервала, который вы можете передать в [`clearInterval`](https://developer.mozilla.org/en-US/docs/Web/API/clearInterval), чтобы остановить интервал. | |
Имейте в виду, что `setInterval` возвращает идентификатор интервала, который вы можете передать в [`clearInterval`](https://developer.mozilla.org/ru/docs/Web/API/clearInterval), чтобы остановить интервал. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Нет перевода...
… letter 'ё', and standardized terms to commonly accepted norms
No description provided.