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

【React中useRef钩子详解】

一、useRef的核心特性

useRef是React提供的Hook,用于在函数组件中创建可变的持久化引用,具有以下核心特性:

  1. 持久化存储
    返回的ref对象在组件整个生命周期内保持不变,即使组件重新渲染,current属性的值也不会丢失。
  2. 无触发渲染
    修改ref.current的值不会导致组件重新渲染,适合存储不影响UI状态的数据(如定时器ID、DOM引用等)。
  3. 多类型支持
    可存储任意类型数据(数字、字符串、对象、DOM节点等),初始值通过参数传递(如useRef(null))。

二、useRef与useState的区别

特性useRefuseState
重新渲染❌ 修改current不触发✅ 更新状态触发重新渲染
数据用途存储与UI无关的变量或DOM引用管理与UI相关的状态
数据更新方式直接修改current属性通过setState函数更新
闭包问题可保存最新值,避免闭包陷阱闭包中可能获取旧状态值
初始化方式直接传入初始值传入初始值,返回状态及更新函数

示例对比:

// useRef:点击按钮更新值但页面不刷新
const countRef = useRef(0);
countRef.current += 1; // useState:更新触发渲染
const [count, setCount] = useState(0);
setCount(count + 1);

三、useRef的典型应用场景

1. 访问DOM元素

通过ref属性绑定到JSX元素,直接操作DOM节点(聚焦

http://www.xdnf.cn/news/5433.html

相关文章:

  • 《AI大模型应知应会100篇》第56篇:LangChain快速入门与应用示例
  • 【Leetcode 每日一题】1550. 存在连续三个奇数的数组
  • 【心海资源】【最新话费盗u】【未测】提币对方官方波场+没有任何加密+无后门+前端VUE
  • 元数据分类
  • 硬件中断请求号和lspci命令查看到的device id有关系吗?
  • 欧拉路与欧拉回路(模板)
  • LVGL简易计算器实战
  • TGV之LTX:《LTX-Video: Realtime Video Latent Diffusion》翻译与解读
  • RagFlow 完全指南(一):从零搭建开源大模型应用平台(Ollama、VLLM本地模型接入实战)
  • Flutter基础()
  • Qt 中 QWidget涉及的常用核心属性介绍
  • 《AI大模型应知应会100篇》第57篇:LlamaIndex使用指南:构建高效知识库
  • 5.11y打卡
  • 缓存(3):本地缓存作用 及 数据一致性 实现策略
  • upload-labs靶场通关详解:第五关
  • Linux基础(vim编辑器)
  • 自然语言处理与BI融合实战:ChatBI动态语义解析技术架构剖析
  • 基于去中心化与AI智能服务的web3钱包的应用开发的背景描述
  • 【Linux网络】HTTP
  • 【GESP真题解析】第 19 集 GESP 二级 2025 年 3 月编程题 1:等差矩阵
  • X.509证书详解
  • 蓝桥杯14届 数三角
  • 【每日一题 | 2025年5.5 ~ 5.11】搜索相关题
  • [Java实战]Spring Boot 解决跨域问题(十四)
  • 深入探索 RKNN 模型转换之旅
  • llama.cpp初识
  • iVX 平台技术解析:图形化与组件化的融合创新
  • Qt模块化架构设计教程 -- 轻松上手插件开发
  • Vivado中可新建的工程类型解析
  • 招行数字金融挑战赛数据赛道赛题一