React Hooks之useRef获取元素示例详解

 更新时间:2023年07月17日 10:30:03   作者:YiYa_咿呀  
这篇文章主要介绍了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 ref的使用示例

    React ref的使用示例

    这篇文章主要介绍了React ref的使用详解,帮助大家更好的理解和学习使用React,感兴趣的朋友可以了解下
    2021-04-04
  • React路由参数传递与嵌套路由的实现详细讲解

    React路由参数传递与嵌套路由的实现详细讲解

    这篇文章主要介绍了React路由参数传递与嵌套路由的实现,嵌套路由原则是可以无限嵌套,但是必须要让使用二级路由的一级路由匹配到,否则不显示,需要的朋友可以参考一下
    2022-09-09
  • React图片压缩上传统一处理方式

    React图片压缩上传统一处理方式

    这篇文章主要介绍了React图片压缩上传统一处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • 详解React Native与IOS端之间的交互

    详解React Native与IOS端之间的交互

    React Native (简称RN)是Facebook于2015年4月开源的跨平台移动应用开发框架,是Facebook早先开源的JS框架 React 在原生移动应用平台的衍生产物,支持iOS和安卓两大平台。本文将介绍React Native与IOS端之间的交互。
    2021-06-06
  • react实现Modal弹窗效果

    react实现Modal弹窗效果

    这篇文章主要为大家详细介绍了react实现Modal弹窗效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • 聊聊jenkins部署vue/react项目的问题

    聊聊jenkins部署vue/react项目的问题

    本文给大家介绍了jenkins部署vue/react项目的问题,文末给大家提到了centOS安装jenkins的脚本,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2022-02-02
  • react render的原理及触发时机说明

    react render的原理及触发时机说明

    这篇文章主要介绍了react render的原理及触发时机说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • React实现二级联动的方法

    React实现二级联动的方法

    这篇文章主要为大家详细介绍了React实现二级联动的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • react中关于Context/Provider/Consumer传参的使用

    react中关于Context/Provider/Consumer传参的使用

    这篇文章主要介绍了react中关于Context/Provider/Consumer传参的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • React在定时器中无法获取状态最新值的问题

    React在定时器中无法获取状态最新值的问题

    这篇文章主要介绍了React在定时器中无法获取状态最新值的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08

最新评论