React Hooks之useRef获取元素示例详解
什么是useRef Hook?
useRef
就是createRef
的Hook版本用来获取元素, 只不过比createRef更强大一点
createRef只能获取普通元素和类元素,并且只能获取到类组件的实例对象,不能拿到函数式组件
import React, {createRef, useRef} from 'react'; class Home extends React.PureComponent{ render() { return ( <div>Home</div> ) } } function About() { return ( <div>About</div> ) } function App() { const pRef = createRef(); const homeRef = createRef(); function btnClick() { console.log(pRef.current); console.log(homeRef.current); } return ( <div> <p ref={pRef}>我是段落</p> <Home ref={homeRef}/> <About/> <button onClick={()=>{btnClick()}}>获取</button> </div> ) } export default App;
import React, {createRef, useRef} from 'react'; class Home extends React.PureComponent{ render() { return ( <div>Home</div> ) } } function About() { return ( <div>About</div> ) } function App() { // const pRef = createRef(); // const homeRef = createRef(); const pRef = useRef(); const homeRef = useRef(); function btnClick() { console.log(pRef.current); console.log(homeRef.current); } return ( <div> <p ref={pRef}>我是段落</p> <Home ref={homeRef}/> <About/> <button onClick={()=>{btnClick()}}>获取</button> </div> ) } export default App;
两种方法都能拿到ref,结果如下:
createRef和useRef
useState和useRef区别:
useRef中保存的数据, 除非手动修改, 否则永远都不会发生变化
const age = useRef(18);
如果说useRef
也可以保存数据的话那么为什么还要有useState
呢?
function App() { const pRef = createRef(); const homeRef = useRef(); function btnClick() { console.log(pRef); // {current: p} console.log(homeRef); // {current: Home} } const [numState, setNumState] = useState(0); // const age = useRef(18); // {current: 18} const age = useRef(numState); // {current: 0} useEffect(()=>{ age.current = numState; }, [numState]); return ( <div> <p>上一次的值: {age.current}</p> <p>当前的值 :{numState}</p> <button onClick={()=>{setNumState(numState + 1)}}>增加</button> </div> ) } export default App;
总结
useRef
可以获取元素,可以保存数据,和createRef
的区别是可以保存数据,和useState
的区别是:useRef
中保存的数据, 除非手动修改, 否则永远都不会发生变化
以上就是React Hooks之useRef获取元素示例详解的详细内容,更多关于React Hooks之useRef的资料请关注脚本之家其它相关文章!
相关文章
React Native中ScrollView组件轮播图与ListView渲染列表组件用法实例分析
这篇文章主要介绍了React Native中ScrollView组件轮播图与ListView渲染列表组件用法,结合实例形式详细分析了ScrollView组件轮播图与ListView渲染列表组件具体功能、使用方法与操作注意事项,需要的朋友可以参考下2020-01-01React报错Element type is invalid解决案例
这篇文章主要为大家介绍了React报错Element type is invalid解决案例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-12-12react echarts tooltip 区域新加输入框编辑保存数据功能
这篇文章主要介绍了react echarts tooltip 区域新加输入框编辑保存数据功能,大概思路是用一个div包裹echarts, 然后在echarts的同级新建一个div用来用来模拟真实tooltip,通过鼠标移入移出事件控制真实tooltip的显示与隐藏,需要的朋友可以参考下2023-05-05解决React报错Style prop value must be a
这篇文章主要为大家介绍了React报错Style prop value must be an object解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-12-12
最新评论