-
Notifications
You must be signed in to change notification settings - Fork 387
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
translate file: Manipulating the DOM with Refs #889
base: main
Are you sure you want to change the base?
Conversation
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.
good
|
||
To access a DOM node managed by React, first, import the `useRef` Hook: | ||
Чтобы получить доступ к узлу DOM, управляемому React, сначала импортируйте `user` Крюк: |
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.
hook переводится на русский как "хук") в https://github.com/reactjs/ru.react.dev/blob/main/TRANSLATION.md указан общепринятый перевод
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.
исправлено
@Vo-one вы могли бы исправить конфликт в этой ветке? |
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.
Привет! Спасибо за перевод! Есть ряд замечаний, в основном повторяющиеся:
- ref/refs нужно переводить как реф/рефы, когда речь идет о термине React.
- Имена переменных, хуков и компонентов не нужно переводить или менять.
- Стоит перепроверить перевод термина hook/hooks.
- Перевод примеров.
- В переводе рекомендуется использовать букву Ё. Пожалуйста, проверьте места, в которых должна быть использована буква Ё с помощью пакета eyo.
@@ -1,52 +1,52 @@ | |||
--- | |||
title: 'Manipulating the DOM with Refs' | |||
title: 'Манипулирование DOM с помощью ссылок' |
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.
title: 'Манипулирование DOM с помощью ссылок' | |
title: 'Манипулирование DOM с помощью рефов' |
по соглашению Refs (как один из механизмов, специфичных для React) переводим как рефы.
Следует исправить во всём переводе:
ref - реф
refs - рефы
--- | ||
|
||
<Intro> | ||
|
||
React automatically updates the [DOM](https://developer.mozilla.org/docs/Web/API/Document_Object_Model/Introduction) to match your render output, so your components won't often need to manipulate it. However, sometimes you might need access to the DOM elements managed by React--for example, to focus a node, scroll to it, or measure its size and position. There is no built-in way to do those things in React, so you will need a *ref* to the DOM node. | ||
React автоматически обновляет [DOM](https://developer.mozilla.org/docs/Web/API/Document_Object_Model/Introduction ) в соответствии с вашими результатами рендеринга, так что вашим компонентам не нужно будет часто манипулировать ими. Однако иногда вам может понадобиться доступ к элементам DOM, управляемым React, например, чтобы сфокусировать узел, прокрутить до него или измерить его размер и положение. В React нет встроенного способа выполнить эти действия, поэтому вам понадобится * ссылка * на узел DOM. |
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 автоматически обновляет [DOM](https://developer.mozilla.org/docs/Web/API/Document_Object_Model/Introduction ) в соответствии с вашими результатами рендеринга, так что вашим компонентам не нужно будет часто манипулировать ими. Однако иногда вам может понадобиться доступ к элементам DOM, управляемым React, например, чтобы сфокусировать узел, прокрутить до него или измерить его размер и положение. В React нет встроенного способа выполнить эти действия, поэтому вам понадобится * ссылка * на узел DOM. | |
React автоматически обновляет [DOM](https://developer.mozilla.org/docs/Web/API/Document_Object_Model/Introduction) в соответствии с результатами вашего рендера, так что ваши компоненты будут редко взаимодействовать с DOM-элементами. Однако иногда вам может понадобиться доступ к ним, например, чтобы сфокусировать узел, прокрутить до него или измерить его размер и положение. В React нет встроенного способа выполнить эти действия, поэтому вам понадобится *реф* на узел DOM. |
"won't need to manipulate it" относится здесь к DOM. Предлагаю перефразировать, чтобы это было очевиднее для читателей. Что думаете насчёт такого варианта?
- How to access another component's DOM node | ||
- In which cases it's safe to modify the DOM managed by React | ||
- Как получить доступ к узлу DOM, управляемому React, с атрибутом `ref` | ||
- Как атрибут JSX `ref` соотносится с хук `use Reef` |
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.
- Как атрибут JSX `ref` соотносится с хук `use Reef` | |
- Как JSX-атрибут `ref` соотносится с хуком `useRef` |
|
||
To access a DOM node managed by React, first, import the `useRef` Hook: | ||
Чтобы получить доступ к узлу DOM, управляемому React, сначала импортируйте `user` Крюк: |
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.
Чтобы получить доступ к узлу DOM, управляемому React, сначала импортируйте `user` Крюк: | |
Чтобы получить доступ к узлу DOM, управляемому React, сначала импортируйте хук `useRef`: |
здесь как раз остался Крюк, а еще useRef
во многих местах превратился в нечто иное - хорошо бы проверить по всему переводу. Название функции useRef
не должно меняться или переводиться.
|
||
```js | ||
const myRef = useRef(null); | ||
``` | ||
|
||
Finally, pass it to the DOM node as the `ref` attribute: | ||
Наконец, передайте свой ref в качестве атрибута `ref` тегу JSX, для которого вы хотите получить узел DOM: |
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.
Наконец, передайте свой ref в качестве атрибута `ref` тегу JSX, для которого вы хотите получить узел DOM: | |
Наконец, передайте свой реф в качестве атрибута `ref` тегу JSX, для которого вы хотите получить узел DOM: |
здесь переводим "ref" как "реф"
|
||
```js | ||
setTodos([ ...todos, newTodo]); | ||
listRef.current.lastChild.scrollIntoView(); | ||
``` | ||
|
||
In React, [state updates are queued.](/learn/queueing-a-series-of-state-updates) Usually, this is what you want. However, here it causes a problem because `setTodos` does not immediately update the DOM. So the time you scroll the list to its last element, the todo has not yet been added. This is why scrolling always "lags behind" by one item. | ||
В React [state updates are queued.](/learn/queueing-a-series-of-state-updates) Обычно это то, чего вы хотите. Однако здесь это вызывает проблему, потому что "установить в dos` не сразу обновляет DOM. Таким образом, к тому времени, когда вы прокручиваете список до его последнего элемента, задача еще не была добавлена. Вот почему прокрутка всегда "отстает" на один элемент. |
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 [state updates are queued.](/learn/queueing-a-series-of-state-updates) Обычно это то, чего вы хотите. Однако здесь это вызывает проблему, потому что "установить в dos` не сразу обновляет DOM. Таким образом, к тому времени, когда вы прокручиваете список до его последнего элемента, задача еще не была добавлена. Вот почему прокрутка всегда "отстает" на один элемент. | |
В React [обновления состояния помещаются в очередь.](/learn/queueing-a-series-of-state-updates) Обычно это то, чего вы хотите. Однако здесь это вызывает проблему, потому что `setTodos` не сразу обновляет DOM. Таким образом, к тому времени, когда вы прокручиваете список до его последнего элемента, задача еще не была добавлена. Вот почему прокрутка всегда "отстает" на один элемент. |
|
||
Refs are an escape hatch. You should only use them when you have to "step outside React". Common examples of this include managing focus, scroll position, or calling browser APIs that React does not expose. | ||
Судьи - это спасательный люк. Вы должны использовать их только тогда, когда вам нужно "выйти за пределы React". Распространенные примеры этого включают управление фокусом, положением прокрутки или вызов API-интерфейсов браузера, которые 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". Распространенные примеры этого включают управление фокусом, положением прокрутки или вызов API-интерфейсов браузера, которые React не предоставляет. | |
Рефы - это спасательный люк. Вы должны использовать их только тогда, когда вам нужно "выйти за пределы React". Распространенные примеры: управление фокусом, положение прокрутки или вызов методов API браузера, которые React не предоставляет. |
|
||
If you stick to non-destructive actions like focusing and scrolling, you shouldn't encounter any problems. However, if you try to **modify** the DOM manually, you can risk conflicting with the changes React is making. | ||
Если вы будете придерживаться неразрушающих действий, таких как фокусировка и прокрутка, у вас не должно возникнуть никаких проблем. Однако, если вы попытаетесь ** изменить ** DOM вручную, вы можете столкнуться с риском возникновения конфликта с изменениями, которые вносит 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.
Если вы будете придерживаться неразрушающих действий, таких как фокусировка и прокрутка, у вас не должно возникнуть никаких проблем. Однако, если вы попытаетесь ** изменить ** DOM вручную, вы можете столкнуться с риском возникновения конфликта с изменениями, которые вносит React. | |
Если вы будете придерживаться действий без изменения DOM, таких как фокусировка и прокрутка, у вас не должно возникнуть никаких проблем. Однако, если вы попытаетесь **обновить** DOM вручную, вы можете столкнуться с риском возникновения конфликта с изменениями, которые вносит React. |
|
||
To illustrate this problem, this example includes a welcome message and two buttons. The first button toggles its presence using [conditional rendering](/learn/conditional-rendering) and [state](/learn/state-a-components-memory), as you would usually do in React. The second button uses the [`remove()` DOM API](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) to forcefully remove it from the DOM outside of React's control. | ||
Чтобы проиллюстрировать эту проблему, в этом примере есть приветственное сообщение и две кнопки. Первая кнопка переключает свое присутствие, используя [conditional rendering](/learn/conditional-rendering) и [state](/learn/state-a-components-memory), как вы обычно делаете в React. Вторая кнопка использует [`remove()` DOM API](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove ), чтобы принудительно удалить его из DOM вне контроля 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.
Чтобы проиллюстрировать эту проблему, в этом примере есть приветственное сообщение и две кнопки. Первая кнопка переключает свое присутствие, используя [conditional rendering](/learn/conditional-rendering) и [state](/learn/state-a-components-memory), как вы обычно делаете в React. Вторая кнопка использует [`remove()` DOM API](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove ), чтобы принудительно удалить его из DOM вне контроля React. | |
Чтобы проиллюстрировать эту проблему, в этом примере есть приветственное сообщение и две кнопки. Первая кнопка переключает свое присутствие, используя [условный рендеринг](/learn/conditional-rendering) и [состояние](/learn/state-a-components-memory), как вы обычно делаете в React. Вторая кнопка использует [`remove()` DOM API](https://developer.mozilla.org/ru/docs/Web/API/Element/remove), чтобы принудительно удалить его из DOM вне контроля React. |
обновил ссылки
|
||
Try pressing "Toggle with setState" a few times. The message should disappear and appear again. Then press "Remove from the DOM". This will forcefully remove it. Finally, press "Toggle with setState": | ||
Попробуйте нажать "Переключить с помощью setState" несколько раз. Сообщение должно исчезнуть и появиться снова. Затем нажмите "Удалить из DOM". Это приведет к его принудительному удалению. Наконец, нажмите "Переключить с помощью setState".: |
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.
Привет! Спасибо за перевод! Есть ряд замечаний, в основном повторяющиеся:
- ref/refs нужно переводить как реф/рефы, когда речь идет о термине React.
- Имена переменных, хуков и компонентов не нужно переводить или менять.
- Стоит перепроверить перевод термина hook/hooks.
- Перевод примеров.
- В переводе рекомендуется использовать букву Ё. Пожалуйста, проверьте места, в которых должна быть использована буква Ё с помощью пакета eyo.
Если ваш пулреквест является исправлением бага, а не переводом, то сперва убедитесь, что проблема относится ТОЛЬКО к https://ru.reactjs.org, а не к https://reactjs.org. Если это не так, то пулреквест следует открыть в родительском репозитории.