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

React 中 useRef 使用方法

useRef() 是 React 提供的一个 Hook,用来创建一个可变的“容器”,它可以存储一个可变的值,并且这个值的改变不会引起组件重新渲染。

1、useRef 和 useState 的区别

特点useRefuseState
值是否引发渲染
用途保存可变值或 DOM 引用保存状态,用来驱动界面渲染
修改方式直接赋值 ref.current = ...用 setter 函数,如 setState

2、为什么说是通过 ref 访问真实 DOM 元素

    1. 什么是真实 DOM 元素?
    • 真实 DOM 元素就是浏览器里渲染的 HTML 元素,比如

      、 这些,JS 通过 document.getElementById() 等方式可以拿到它们。

    • React 把 JSX 转换成真实 DOM 渲染到页面上。

    1. ref 的作用
    • React 中,ref 用来“获取”这些真实 DOM 元素的引用,方便你直接操作 DOM,比如聚焦输入框、测量大小、调用原生方法等。

    • React 渲染后,会自动把对应的 DOM 节点赋值给你传入的 ref.current。

function MyInput() {const inputRef = React.useRef(null);React.useEffect(() => {// 组件挂载后,inputRef.current 就是 <input> 的真实 DOMinputRef.current.focus();  // 让输入框自动获得焦点}, []);return <input ref={inputRef} />;
}
这里:
inputRef.current 是真实的 <input> DOM 元素。
你可以直接调用 DOM 原生方法,比如 focus()
const [show, setShow] = useState(false);
function showNotice() {setShow(true);}function closeNotice() {setShow(false);}
//系统方法暴露给父组件useImperativeHandle(cRef, () => ({showNotice: showNotice,closeNotice: closeNotice,}));<Modalref={cRef}isOpen={show}/>

简单总结

  • useRef() 用来创建一个在组件整个生命周期中持续存在的可变引用。
  • 修改 .current 不会引起组件重渲染。
  • 既可以拿来存 DOM 节点,也可以存任意数据。
http://www.xdnf.cn/news/1257661.html

相关文章:

  • 接入小甲鱼数字人API教程【详解】
  • 透明矿山:科技重塑矿业未来
  • Day09 Tlisa登录认证
  • DAY33打卡
  • 哈勃网络计划大规模升级卫星以创建全球蓝牙层
  • OpenAI 开源模型 gpt-oss 正式上线微软 Foundry 平台
  • 中国北极圈战略部署
  • 数据结构(5)
  • 构建一个简洁优雅的 PHP 参数验证器 —— php-schema-validator
  • concurrentqueue:一个高并发高性能的C++无锁队列
  • 计算机视觉(opencv)——图像本质、数字矩阵、RGB + 基本操作(实战一)
  • 十八、k8s细粒度流量管理:服务网格
  • Netty知识储备:BIO、NIO、Reactor模型
  • 无人机未来的通信脉络:深度解析远距离无线通信模块的革新
  • Numpy科学计算与数据分析:Numpy数组操作入门:合并、分割与重塑
  • Spring Cloud系列—LoadBalance负载均衡
  • 剑指offer第2版——面试题1:赋值运算符函数
  • LINUX-批量文件管理及vim文件编辑器
  • AR技术:制造业质量控制的“智能革新”
  • OpenAI 开源模型 GPT-OSS深度拆解:从1170亿参数到单卡部署,重构AI开源生态
  • Claude Code MCP 网络搜索配置命令
  • Node.js特训专栏-实战进阶:21.Nginx反向代理配置
  • 开源软件与文化:从嬉皮士精神到数字时代的协同创新
  • 计算机网络1-5:计算机网络的性能指标
  • 浅析 Berachain v2 ,对原有 PoL 机制进行了哪些升级?
  • 水下管道巡检机器人cad【10张】三维图+设计说明书
  • OpenCv对图片视频的简单操作
  • KUKA库卡焊接机器人氩气节气设备
  • 深入剖析React框架原理:从虚拟DOM到Fiber架构
  • python安装部署rknn-toolkit2(ModuleNotFoundError: No module named ‘rknn_toolkit2‘)