useRef — это хук React, который позволяет создавать постоянную ссылку на значение или элемент DOM. В отличие от useState, который используется для управления состоянием, запускающим повторную отрисовку, useRef в основном используется для побочных эффектов или прямого доступа к элементам DOM.
Хук useRef особенно полезен для:
Хук useRef возвращает объект со свойством .current. когда вы вызываете useRef, он создает постоянную ссылку на значение, которое вы передаете в качестве аргумента. Эта ссылка хранится в свойстве .current возвращаемого объекта.
Чтобы создать ссылку, просто вызовите useRef с начальным значением.
import { useRef} from 'react' const App = () => { const countRef = useRef(0) return (...) } export default App
В приведенном выше примере countRef — это ссылка на начальное значение 0.
Чтобы получить доступ к ссылочному значению, просто вызовите объект countRef со свойством .current
import { useRef} from 'react' const App = () => { const countRef = useRef(0) const increment = () => { countRef.current } return () } export default AppCount: {countRef.current}
В приведенном выше примере, если вы нажмете кнопку, будет вызвана функция увеличения, которая увеличит countRef, но счетчик не будет обновлен в
Count: {countRef.current
, поскольку обновление useRef не вызывайте повторную отрисовку, например useState.обновите код до примера ниже, чтобы получить ожидаемый результат.
import { useRef, useState } from 'react' const App = () => { const countRef = useRef(0) const [count, setCount] = useState(0) const increment = () => { countRef.current setCount(countRef.current) } return () } export default AppCount: {count}
можно использовать хук useRef для доступа и изменения свойств элементов HTML
const App = () => { const inputRef = useRef(null) const handleFocus = () => { inputRef.current.focus() } return( ) }
В отличие от useState или переменной, useRef может передавать значения и данные между повторными рендерингами, например кэшированные данные или настройки конфигурации.
В некоторых случаях использование useRef может помочь в оптимизации компонента, избегая ненужного повторного рендеринга. например, если у вас есть компонент, который отображает большой список элементов, вы можете кэшировать его с помощью useRef и изменять повторную визуализацию только тех элементов, которые были изменены.
Если вы попытаетесь передать ссылку на свой собственный компонент следующим образом
const inputRef = useRef(null); return;
В консоли может появиться ошибка:
Предупреждение: Функциональным компонентам нельзя присваивать ссылки. Попытки получить доступ к этой ссылке потерпят неудачу. Вы имели в виду использовать React.forwardRef()?
Чтобы решить эту проблему, оберните пользовательский компонент с помощьюforwardRef следующим образом:
const inputRef = useRef(null); return;
Пользовательский компонент:
import { forwardRef } from 'react'; const MyInput = forwardRef(({ value, onChange }, ref) => { return ( ); }); export default MyInput;
useRef — это мощный перехват, который в основном используется для использования побочных эффектов, таких как кэширование данных между повторными рендерингами или доступ к элементам DOM. Это отличный инструмент для оптимизации производительности и достижения определенных функций в приложении React.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3