Правильно ли я понимаю, что делать навигацию по DOM-дереву в React нельзя?

Правильно ли я понимаю, что в React не используется навигация по dom дереву: querySelector, closest и прочее? Если я хочу что-то получить по событию (например по клику), то я должен это передать исключительно в обработчике: onClick={() => {addToCard(item.name, item.price)}} ?

А если мне нужно прослушать событие на одной кнопке, а прочитать значение на другом конце странице, то я тоже должен это прокидывать через пропс?


Ответы (1 шт):

Автор решения: Sergei Kirjanov

Надо представить, на каком уровне абстракции мы работаем. Есть модель и представление (view-model). addToCard -- это какая-то операция, изменяющая модель.

Вариант 1: Внутри addToCard мы про существование страницы не думаем, а дополнительные данные уже есть в модели на момент клика.

Вариант 2: Дополнительные данные идут в addToCard аргументом. Тогда компоненты представления могут использовать общего предка, например с помощью useContext

→ Ссылка