美文网首页
React Hooks 教程之 useRef

React Hooks 教程之 useRef

作者: 拉基简书已退 | 来源:发表于2022-02-09 17:50 被阅读0次

    目录

    React Hooks 教程系列:

    正文

    useRef 返回一个可变的 ref 对象,ref 对象在组件的整个生命周期一直存在,其 current 属性为保存的值

    官方的解释有点晦涩,其实 useRef 就两种用法:
    1、 保存 JSX 中 DOM 元素的引用,用于操作 UI 元素
    2、 保存变量,这一点同 useState,区别在于,useRef 保存的变量值改变时,并不会通知你

    保存 DOM 元素

    将 App.tsx 文件内容替换为下面的代码:

    import React from "react";
    import "./App.css";
    
    const App: React.FC = () => {
        const inputRef = React.useRef<HTMLInputElement>(null);
    
        return (
            <>
                <input ref={inputRef} type="text" />
                <button
                    onClick={() => {
                        inputRef.current?.focus();
                    }}
                >
                    输入框获取焦点
                </button>
            </>
        );
    };
    
    export default App;
    

    因为用了 TypeScript,所以 useRef 需要指定类型 HTMLInputElement,要不然会报错

    点击按钮即可让输入框获取焦点,运行效果如下

    保存 DOM 元素

    保存变量

    将 App 组件替换为下面的代码

    const App: React.FC = () => {
        const valueRef = React.useRef(false);
    
        return (
            <>
                <div>{String(valueRef.current)}</div>
                <button
                    onClick={() => {
                        valueRef.current = !valueRef.current;
                        console.log(valueRef.current);
                    }}
                >
                    改变Ref保存的值
                </button>
            </>
        );
    };
    

    运行效果如下,可以看到日志显示 ref 保存的值已经改变了,但是在页面上并没有更新,不像 useState 会主动通知页面重新渲染,所以用 useRef 保存变量的时候需要注意,不过这种用法比较少,大部分情况下都是用第一种保存 DOM 元素

    保存变量

    相关文章

      网友评论

          本文标题:React Hooks 教程之 useRef

          本文链接:https://www.haomeiwen.com/subject/ustgkrtx.html