Как получить HTML-элемент с помощью useRef (реакция/хуки)

Попытка использовать хук useRef для функционального компонента. Я получаю: {current: null}, когда пытаюсь вывести это на консоль. Любая вещь выглядит здесь?


import React, {useRef} from 'react';

const Hi = () => (

const span = useRef<HTMLSpanElement>(null);
console.info(span);

return(
  <div>
    <p>hi</p>
  </div>
)
);

export default Hi;
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
151
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

useRef не создает элемент HTML; скорее, вам нужно прикрепить полученную ссылку к соответствующему элементу JSX (написав, например, <span ref = {span} />), а затем React обновит ссылку, чтобы она указывала на соответствующий узел элемента или компонент.

Это означает две вещи:

  1. Вам необходимо включить соответствующий элемент JSX в возвращаемое значение вашей функции компонента.
  2. Даже после того, как вы это сделаете, вы не сможете использовать ref внутри самой функции компонента (по крайней мере, при первом ее вызове), потому что узел элемента еще не создан. Вместо этого ссылка доступна для использования в обработчиках событий, эффектах и ​​так далее.

Для получения дополнительной информации см. https://react.dev/reference/react/useRef#manipulating-the-dom-with-a-ref

Ответ принят как подходящий
 const pRef = useRef(null);

  useEffect(() => {
    console.info(pRef.current);
  }, []);

  return <p ref = {pRef}>hi</p>;

Пожалуйста, объясните свой ответ, чтобы сделать его лучше

Rohit Gupta 22.04.2023 14:00

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