useRef返回一个可变的ref对象,其.current属性被初始化为传递的参数(initialValue)。返回的ref对象在组件的整个生命周期中持续存在。强制获取和操作DOM:functionTextInputWithFocusButton(){//通过useRef创建和获取Dom元素constinputEl=useRef(null);constonButtonClick=()=>{//`current`指向挂载的DOMinputEl.current.focus();};return(<>聚焦输入>);}useRef创建一个不受组件刷新影响的变量importReact,{useRef,useState,useEffect}from"react";functionUseRef(){const[x,setX]=useState(0)//function只要组件有更新,a就会重置为0,所以函数组件需要使用useRef来存储变量leta=0//useRef可以在函数组件中生成一个用于存储数据的变量letcurrentVal=useRef(0)//通过useRefconstinputElement创建和获取Dom元素=useRef(null);useEffect(()=>{console.log(`useEffect---x:${x}---currentVal:${currentVal.current}---a:${a}`);},[x])返回(<>{x}----
{setX(v=>v+1);currentVal.current+=2;a+=2}}>+1>);}按钮点击+1,页面会打印:useEffect---x:1---currentVal:2---a:0useEffect---x:2---currentVal:4---a:0useEffect---x:3---currentVal:6---a:0因为a是普通变量,只要点击按钮,就会刷新函数组件,重新生成一个新的a,并且该值永远为0。如果要在函数组件中创建不受组件刷新影响的变量,必须使用useRef生成掘金:https://juejin.cn/user/303430...所有原创好文CSDN:https://blog.csdn.net/qq_4275...所有原创好文:https://www.jianshu.com/u/460...所有原创好文segmentfault认为:https://segmentfault.com/u/ja...全部原创好文博客园:https://www.cnblogs.com/Jason...全部原创好文