React Hooks 教程之 useRef

介绍

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

官方的解释有点晦涩,下面展示两个用法实例,实践出真知:
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 会主动通知页面重新渲染,所以不要在 useState 的依赖项使用 useRef 保存的值,新手很容易犯这个错误

保存变量

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值