美文网首页
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