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

【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节点(聚焦

相关文章:

  • 【数据结构入门训练DAY-31】组合的输出
  • 【音视频工具】MP4BOX使用
  • k8s 资源对比总结
  • 通过 Azure DevOps 探索 Helm 和 Azure AKS
  • istio in action之应用弹性与容错机制
  • 理解页内碎片与页外碎片:分页存储管理的关键问题
  • 长短期记忆网络(LSTM)深度解析:从理论到实践的全方位指南
  • 23、DeepSeek-V2论文笔记
  • LangGraph框架中针对MCP协议的变更-20250510
  • YOLOv2框架深度解析
  • Go语言实现优雅关机和重启的示例
  • 九、STM32入门学习之WIFI模块(ESP32C3)
  • TIME - MoE 模型代码 4——Time-MoE-main/run_eval.py
  • 图形化编程革命:iVX携手AI 原生开发范式
  • MNIST 数据并行 Data Parallel - DP
  • 【目标检测系列】YOLOV1解读
  • Go语言实现豆瓣电影Top250爬虫
  • 掌握 void 类型在函数返回值中的应用
  • MIT 6.S081 2020 Lab3 page tables 个人全流程
  • 添加文字标签
  • 6连败后再战萨巴伦卡,郑钦文期待打出更稳定发挥
  • 挖掘机4月销量同比增17.6%,出口增幅创近两年新高
  • 80后莆田市文旅局长马骏登台与杨宗纬合唱,“演唱会秒变旅游推介会”
  • 河南洛阳新安县煤渣倾倒耕地:多年难恢复,为何至今未解决?
  • “影像上海”中的自媒体影像特展:无论何时,影像都需要空间
  • 7月打卡乐高乐园,还可以去千年古镇枫泾参加这个漫画艺术季