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

React——useRef()

useRef 是 React 的一个 Hook,用于在组件的整个生命周期内持久化保存数据。主要有以下几个用途:

  1. 存储对 DOM 节点的引用:通过给 DOM 元素添加 ref 属性来直接访问实际的 DOM 节点。这常用于需要直接操作 DOM 时,比如管理焦点、文本选择或媒体播放。

    示例代码:

function TextInputWithFocusButton() {const inputEl = useRef(null);const onButtonClick = () => {// `current` 指向挂载到 `input` 元素的真实 DOM 节点inputEl.current.focus();};return (<><input ref={inputEl} type="text" /><button onClick={onButtonClick}>Focus the input</button></>);}
  1. 保存组件状态跨渲染周期不变的数据useRef 返回的对象在组件的整个生命周期内保持不变,可以用来保存任何可变值。与实例属性类似,当你想要保存不需触发视图重新渲染的数据时,可以使用 useRef

    示例代码:

function TimerComponent() {const intervalRef = useRef();useEffect(() => {const id = setInterval(() => {// ...每隔一段时间执行的操作...}, 1000);intervalRef.current = id;return () => clearInterval(intervalRef.current);}, []);// ...}
  1. 追踪组件是否已经挂载或卸载:有时我们需要知道组件是否仍然挂载在 DOM 上,以避免在异步操作(如 API 调用)完成后调用 setState 导致的潜在错误。

    示例代码:

function MyComponent() {const isMountedRef = useRef(true);useEffect(() => {return () => {// 组件卸载时更新 ref 的值isMountedRef.current = false;};}, []);// 使用 isMountedRef.current 确认组件是否挂载}
  1. 作为实例变量:对于需要存储任何可变值而又不想导致组件重新渲染的场景非常有用。因为 useRef 创建的是一个普通 JavaScript 对象,其 .current 属性被初始化为传入的参数(useRef 的初始值),这个值可以自由更改。

总结来说,useRef 主要用于访问 DOM 节点、保存可变数据和跟踪组件挂载状态,且对它所保存的数据的修改不会触发组件的重新渲染。


http://www.mrgr.cn/news/13079.html

相关文章:

  • vivado U_SET
  • 2024年第十五届蓝桥杯图形化省赛真题分享包含答案
  • World of Warcraft [CLASSIC][80][Grandel] Call to Arms: Strand of the Ancients
  • 力扣(坏了的计算机)
  • SSRF实现.SSH未创建写shell和SSRF漏洞之FastCGI利用
  • 排序补充之快排的三路划分法
  • 【算法基础实验】图论-Dijkstra最短路径
  • ZooKeeper的节点上下线感知
  • redis | 认识非关系型数据库Redis的哈希数据类型
  • 基于C#.net技术的电子支付系统设计与实现
  • 正则表达式(Regular Expression)
  • day42|完全背包问题 518. 零钱兑换 II 377. 组合总和 Ⅳ 322. 零钱兑换 279.完全平方数 139.单词拆分 多重背包问题
  • 图像处理 -- 图像清晰度测量方法
  • 加州大学圣地亚哥分校 沉浸式遥操作机器人系统
  • Wails实现桌面番茄钟应用
  • 渲染十万条数据的方法之分批渲染
  • 探索微服务架构中的动态服务发现与调用:使用 Nacos 与 Spring Cloud OpenFeign 打造高效订单管理系统
  • JavaWeb基础 -- Spring事务
  • 【Java】Spring Boot使用 Email 传邮件 (上手图解)
  • c语言跨文件传输数据