Skip to content
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

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

Vo-one
Copy link

@Vo-one Vo-one commented May 28, 2023

Если ваш пулреквест является исправлением бага, а не переводом, то сперва убедитесь, что проблема относится ТОЛЬКО к https://ru.reactjs.org, а не к https://reactjs.org. Если это не так, то пулреквест следует открыть в родительском репозитории.

Copy link

@FrMks FrMks left a 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` Крюк:
Copy link

@naknumberone naknumberone May 30, 2023

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 указан общепринятый перевод

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

исправлено

@titovmx
Copy link
Collaborator

titovmx commented Aug 4, 2023

@Vo-one вы могли бы исправить конфликт в этой ветке?

Copy link
Collaborator

@titovmx titovmx left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Привет! Спасибо за перевод! Есть ряд замечаний, в основном повторяющиеся:

  1. ref/refs нужно переводить как реф/рефы, когда речь идет о термине React.
  2. Имена переменных, хуков и компонентов не нужно переводить или менять.
  3. Стоит перепроверить перевод термина hook/hooks.
  4. Перевод примеров.
  5. В переводе рекомендуется использовать букву Ё. Пожалуйста, проверьте места, в которых должна быть использована буква Ё с помощью пакета eyo.

@@ -1,52 +1,52 @@
---
title: 'Manipulating the DOM with Refs'
title: 'Манипулирование DOM с помощью ссылок'
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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`
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Как атрибут JSX `ref` соотносится с хук `use Reef`
- Как JSX-атрибут `ref` соотносится с хуком `useRef`


To access a DOM node managed by React, first, import the `useRef` Hook:
Чтобы получить доступ к узлу DOM, управляемому React, сначала импортируйте `user` Крюк:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Чтобы получить доступ к узлу 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:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Наконец, передайте свой 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. Таким образом, к тому времени, когда вы прокручиваете список до его последнего элемента, задача еще не была добавлена. Вот почему прокрутка всегда "отстает" на один элемент.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
В 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 не предоставляет.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Судьи - это спасательный люк. Вы должны использовать их только тогда, когда вам нужно "выйти за пределы 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.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Если вы будете придерживаться неразрушающих действий, таких как фокусировка и прокрутка, у вас не должно возникнуть никаких проблем. Однако, если вы попытаетесь ** изменить ** 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.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Чтобы проиллюстрировать эту проблему, в этом примере есть приветственное сообщение и две кнопки. Первая кнопка переключает свое присутствие, используя [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".:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Название кнопок стоит также перевести в примере ниже

Copy link
Collaborator

@titovmx titovmx left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Привет! Спасибо за перевод! Есть ряд замечаний, в основном повторяющиеся:

  1. ref/refs нужно переводить как реф/рефы, когда речь идет о термине React.
  2. Имена переменных, хуков и компонентов не нужно переводить или менять.
  3. Стоит перепроверить перевод термина hook/hooks.
  4. Перевод примеров.
  5. В переводе рекомендуется использовать букву Ё. Пожалуйста, проверьте места, в которых должна быть использована буква Ё с помощью пакета eyo.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants