React之旅-06 Ref

当你想让一个组件"记住"一些信息,但又不想这些信息触发新的渲染时,你可以使用 ref。

使用 Ref 前,需要导入useRef,代码如下:

TypeScript 复制代码
import { useRef } from 'react';

在您的组件内部,调用 useRef 并将您想要引用的初始值作为唯一参数传递。例如,这里是对值0的引用:

TypeScript 复制代码
const ref = useRef(0);

您可以通过 ref.current 属性访问该 ref 的当前值。这个值是有意可变的,意味着您可以读取和写入它。它就像您组件中的一个秘密口袋,React不会跟踪。

Ref 指向一个数字,但就像 State 一样,你可以指向任何东西:一个字符串、一个对象,甚至是函数。与 State 不同,Ref 是一个普通的 JavaScript 对象,你可以读取和修改其当前属性。

请注意,组件不会在每次增加时重新渲染。像 State 一样,React 会在重新渲染之间保留 Ref。然而,设置 State 会重新渲染组件。改变 Ref 不会!

Ref 和 State 的区别,见下表:

|---------------------------|---------------------------------------|
| refs | state |
| useRef(初始值) | useSate(初始值) |
| 当改变时,不会触发渲染 | 当改变时,会触发渲染 |
| "可变"------可以在渲染过程之外,修改或改变 | "不可变"------您必须使用状态设置函数来修改状态变量以排队重新渲染。 |
| 在渲染期间,不应该读取或更新 | 可随时读取 |

通常,当您的组件需要与外部API进行通信时,您会使用ref------通常是不会影响组件外观的浏览器API。以下是一些这些罕见的情况:

  • 存储超时ID
  • 存储和操作DOM元素
  • 存储其他不必要用于计算JSX的对象

如果你的组件需要存储一些值,但不会影响渲染逻辑,请选择使用 ref。

相关推荐
vortex51 分钟前
深度字典攻击(实操笔记·红笔思考)
前端·chrome·笔记
我是伪码农3 分钟前
Vue 1.30
前端·javascript·vue.js
利刃大大11 分钟前
【Vue】默认插槽 && 具名插槽 && 作用域插槽
前端·javascript·vue.js
艳阳天_.15 分钟前
web 分录科目实现辅助账
开发语言·前端·javascript
2501_9219308321 分钟前
React Native 鸿蒙跨平台开发:LinearGradient 径向渐变
react native·react.js·harmonyos
2601_9495936521 分钟前
React Native 鸿蒙跨平台开发:LinearGradient 实战案例集
react native·react.js·harmonyos
小白640232 分钟前
2025年终总结-迷途漫漫,终有一归
前端·程序人生
2501_9209317035 分钟前
React Native鸿蒙跨平台跨平台阅读应用实现方案,包含书籍展示、分类筛选、搜索排序等功能模块,通过清晰的状态管理实现数据筛选与排序
react native·react.js·ecmascript·harmonyos
烟花落o37 分钟前
贪吃蛇及相关知识点讲解
c语言·前端·游戏开发·贪吃蛇·编程学习
晚霞的不甘40 分钟前
Flutter for OpenHarmony专注与习惯的完美融合: 打造你的高效生活助手
前端·数据库·经验分享·flutter·前端框架·生活