useRef 的使用

简介: useRef 的使用

useRef 的作用

  1. useRef 用来获取DOM元素对象
  2. 保存数据

useRef 的使用方法

import React, {useRef} from "react";
function Ref (){
    const box = useRef()
    return (
        <div>
            <div ref={box}>useRef</div>
            <button onClick={() => console.log(box)}>+1</button>
        </div>
    )
}
export default Ref;

说明一下: 当我们需要获取元素对象的时候, 首先引入useRef, 其次调用useRef()方法接收它的返回值,我们需要获取那个DOM元素就在那个DOM元素上进行绑定,通过ref属性将useRef的返回值绑定到元素身上,这样useRef的返回值,通过useRef返回一个对象,对象内部有个current属性,这个属性就对应着我们需要的元素对象;

使用useRef 保存数据

import React, {useRef, useEffect, useState} from "react";
function Ref (){
    let timerId = useRef()
    const [count, setCount] = useState(0)
    useEffect(() => {
        timerId.current = setInterval(() => {
            setCount(count => count + 1)
        }, 1000)
    }, [])
    const stop = () => {
        console.log(timerId)
        clearInterval(timerId.current)
    }
    return (
        <div>
            <div>{count}</div>
            <button onClick={stop}>停止</button>
        </div>
    )
}
export default Ref;

这里讲一下 , 为什么不用let一个变量来保存数据, 因为再使用定时器更新状态数据时, 数值的每次变化都会引起组件的更新,每次更新都重新let一个变量,所以在进行解绑操作的时候,你的let变量为null,它并没有保存定时器,所以以上场景需要使用useRef进行保存数据,useRef不会因为组件的更新而丢失数据,虽然组件进行了更新,但是通过useRef保存的数据是不会丢失的,这里通过useRef中的current来进行保存也是官方要求的写法,所以如果你想要保存的数据不会因为组件的更新而丢失,就可以使用useRef来保存数据

相关文章
|
Ubuntu 网络安全 数据安全/隐私保护
百度搜索:蓝易云【docker通过dockerfile安装sftp教程。】
现在,你已经通过 Dockerfile 成功安装了 SFTP,并且可以使用指定的用户名和公钥进行远程访问。请确保替换示例中的用户名、密码和公钥为自己的实际值。
298 1
|
安全 jenkins 测试技术
自动化测试与持续集成/持续交付(CI/CD)的实践与应用
自动化测试是现代软件开发不可或缺的环节,它可以有效地提高测试效率、降低测试成本。而持续集成/持续交付(CI/CD)则是一种基于自动化的软件开发流程,能够将代码的开发、构建、测试和部署等过程无缝连接起来,从而实现快速迭代和部署。本文将结合实际案例,介绍自动化测试和CI/CD的实践与应用。
462 2
|
前端开发
antd_使用Input封装实现Form校验效果(最终版)
本文介绍了在Ant Design (antd)框架中如何封装Input组件以实现表单校验效果,并提供了封装代码示例以及如何在提交时进行校验。
436 4
antd_使用Input封装实现Form校验效果(最终版)
|
前端开发 计算机视觉
React使用antd实现可编辑单元格
React结合Ant Design实现可编辑单元格的表格组件,通过EditableRow和EditableCell封装实现单元格编辑功能,并提供saveFun回调保存编辑内容。
538 1
|
资源调度 JavaScript 前端开发
深度剖析 Vite 配置
深度剖析 Vite 配置
491 1
|
机器学习/深度学习 定位技术
GEE(CCDC-2)——根据以获取的研究区CCDC系数进行土地覆被分类分析
GEE(CCDC-2)——根据以获取的研究区CCDC系数进行土地覆被分类分析
403 0
|
存储 编译器 C++
c++类全面讲解
前言 这次主要讲类的基础、构造函数与析构函数的使用,以及继承和多态。
268 0
|
前端开发 JavaScript
🚀🚀🚀Astro:一个可以同时写React、Vue、Svelte、SolidJS等多种语言的框架
🚀🚀🚀Astro:一个可以同时写React、Vue、Svelte、SolidJS等多种语言的框架
|
区块链
区块链交易所的返佣(推荐、持仓)机制系统合约开发部署
区块链交易所的返佣(推荐、持仓)机制系统合约开发部署
|
SQL 存储 分布式计算
HDFS/HBase技术报告·分布式数据库设计架构的全面解析
HDFS/HBase技术报告·分布式数据库设计架构的全面解析
HDFS/HBase技术报告·分布式数据库设计架构的全面解析