当前位置: 首页 > 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.dtcms.com/a/319379.html

相关文章:

  • 设计模式 观察者模式
  • react-router/react-router-dom
  • 对话访谈|盘古信息×冠捷科技:全球制造标杆的智能化密码
  • 鸿蒙类型转化Json转map
  • 【实录】NestJS 中的 IoC
  • 动力电池点焊机:效率质量双提升,驱动新能源制造升级
  • 中小制造企业数字化转型的可持续发展:IT架构演进与管理模式迭代
  • [盛最多水的容器]
  • WPS定制设置成绿色软件
  • Go语言Ebiten坦克大战
  • ADC常用库函数(STC8系列)
  • 现代制冷系统核心技术解析:从四大件到智能控制的关键突破
  • 客户管理系统的详细项目框架结构
  • 从房地产企业运作观企业能力建设
  • (第八期)VS Code 网页开发入门指南:从零开始掌握前端开发工具
  • Leetcode——菜鸟笔记2(移动0)
  • 92. 反转链表 II
  • 【实时Linux实战系列】实时分布式计算架构的实现
  • DataEase官方出品丨SQLBot:基于大模型和RAG的智能问数系统
  • 机柜指示灯识别误报率↓85%:陌讯多模态融合算法实战解析
  • Linux 内核:节点创建汇总
  • NFS 服务器
  • 【运维进阶】NFS 服务器
  • 16.Home-懒加载指令优化
  • .NET 10 新增功能系列文章5——C# 14 中的新增功能
  • latex in overleaf快速通关论文排版
  • E频段无线射频链路为5G网络提供高容量回程解决方案 — 第一部分
  • Linux(17)——Linux进程信号(下)
  • 【RabbitMQ面试精讲 Day 14】Federation插件与数据同步
  • 剑指offer第2版——面试题1:赋值运算符函数