React - использование «документа» внутри компонента

Если у меня есть презентационный (дочерний) компонент со следующей строкой:

<small id = "parameters"> some parameters text </small>

Я заметил, что если я перейду к его родительскому компоненту контейнера и попытаюсь получить этот элемент:

 const textElem = document.getElementById('parameters').value;

Это не получит своей ценности.

Это почему? Если я использую document в компоненте, является ли он «локальным» для этого компонента?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
91
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать document внутри компонента, чтобы ссылаться на глобальный объект document, он не является локальным для этого компонента, однако в момент, когда вы ссылаетесь на document.getElementById('parameters'), этот элемент, возможно, еще не был отрисован в dom, поэтому обязательно вызовите его после рендеринга дочернего элемента.

С другой стороны, возможно, вы хотели использовать: document.getElementById('parameters').innerHTML чтобы получить текст внутри этого элемента вместо .value

да, вы можете сделать это в componentDidMount() или в useEffect()

vijayst 15.11.2018 18:11

Да, дочерний элемент отрисован. Могу ли я тогда использовать textElem.select();? Потому что в настоящее время по какой-то причине это не работает.

Gambit2007 15.11.2018 18:18

вы пробовали document.getElementById ('parameters'). innerHTML?

rubentd 15.11.2018 18:20

также document.getElementById ('parameters'). innerText

rubentd 15.11.2018 18:21

Да, у меня HTMLUnknownElement, что странно, потому что я просматриваю этот дочерний компонент, поэтому он был четко визуализирован ...

Gambit2007 15.11.2018 18:23

Тот факт, что вы его просматриваете, не обязательно означает, что он уже отрисован к тому моменту, когда вы ссылаетесь на него в коде.

rubentd 15.11.2018 18:24

В этом случае вы можете рассмотреть ссылка, особенно для чего-то вроде select(), focus() и т. д. Имейте в виду, что Выбрать() предназначен для ввода, такого как текст.

Alexander Staroselsky 15.11.2018 18:24

@rubentd у меня есть функция copyParams, в которой живет этот код. Он определен в компоненте контейнера и передается дочернему props. При нажатии кнопки Copy в дочернем компоненте он вызывает эту функцию, которая выполняет этот код, и я получаю HTMLUnknownElement только после нажатия этой кнопки Copy, так почему же он еще не был отрисован?

Gambit2007 15.11.2018 18:28

Понятно ... В этом случае можно с уверенностью предположить, что элемент уже отрисован.

rubentd 15.11.2018 18:30

Не уверены, в чем проблема, есть ли вероятность, что вы поделитесь более подходящим кодом для этого компонента?

rubentd 15.11.2018 18:31

Другие вопросы по теме