当前位置: 首页 > news >正文

深入解析 React 中的 useRef Hook

useRef 是 React 中一个强大且多功能的Hook,它提供了一种组件在渲染之间“记住”值的方式,而不会触发重新渲染。

一、useRef 的核心概念

1、基本定义
useRef 是一个函数,返回一个可变的ref对象,其 .current 属性被初始化为传入的参数(initiaValue

const refContainer = useRef(initialValue);

2、关键特性

  • 持久性: 返回的ref对象在组件的整个生命周期中保持不变
  • 可变性: 可以自由修改 .current 属性
  • 非响应式: 修改 .current 不会触发组件重新渲染
  • 同步更新:.current 的修改是同步的,立即生效

二、useRef 的三大核心用途

1、访问DOM元素
最常见的用例是访问 React 组件中的DOM节点

function TextInputWithFocusButton() {const inputEl = useRef(null);const focusInput = () => {inputEl.current.focus();};return (<><input ref={inputEl} type="text" /><button onClick={focusInput}>Focus the input</button></> );
}

2、存储可变值
存储不会触发重新渲染的组件状态

function TimerComponent() {const [count, setCount] = useState(0);const intervalRef = useRef();useEffect(() => {intervalRef.current = setInterval(() => {setCount(c => c + 1);	}, 1000);return () => clearInterval(intervalRef.current);}, []);const stopTimer = () => {clearInterval(intervalRef.current);};return (<div><p>Count: {count}</p><button onClick={stopTimer}>Stop Timer</button></div>);
}

3、保存前一次渲染的值
实现类似类组件中实例变量的功能

function CounterWithPrevious() {
http://www.dtcms.com/a/328471.html

相关文章:

  • 【c++】反向赋值:颠覆传统的数据交互范式
  • day49 力扣42. 接雨水 力扣84.柱状图中最大的矩形
  • 《疯狂Java讲义(第3版)》学习笔记ch1
  • 【C#补全计划】StringBuilder
  • dify是什么?
  • 每日任务day0812:小小勇者成长记之挤牛奶
  • 实现一个二维码让 iOS 和 Android 用户自动跳转到对应下载链接
  • Spring中的@Autowired和@Bean有什么区别?
  • 【超详细!题解|两种做法】洛谷P3196 [HNOI2008] 神奇的国度[MCS算法]
  • linux 开机进入initramfs无法开机
  • 嵌入式技术公开课精华笔记:CSDN专版
  • 【数据分享】1:25万水系线路分布数据(辽宁省)
  • Java 课程,每天解读一个简单Java之利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示, * 60分以下
  • imx6ull-驱动开发篇19——linux信号量实验
  • 深度优先搜索和广度优先搜索(重制版)
  • [git] 重配ssh key | 解决冲突
  • 【SpringBoot】MyBatis 动态 sql
  • python——day2
  • 力扣(LeetCode) ——移除链表元素(C语言)
  • NumPy 创建空数组并逐个添加元素的深度解析
  • java理解
  • 解决微前端子应用嵌入后样式被覆盖
  • 深度解析 AS32S601 芯片 CAN Bus Off 机制:从原理到应用的全流程指南
  • 浏览器CEFSharp+X86+win7 之 全球外贸电商平台订单管理(十)
  • 前后端分离项目中Spring MVC的请求执行流程
  • uni-app实战教程 从0到1开发 画图软件 (学会画图)
  • Ceph BlueStore存储引擎详解
  • 【数据结构】并查集:从入门到精通
  • 《Linux基础知识-1》
  • docker-compose搭建 redis 集群