#yyds干货盘点#React Hooks 系列 之 useRef
  Qp5JTyIxtbwu 2023年12月12日 8 0

useRef 返回一个可变的 ref 对象,其 .current 属性被初始化为传递的参数(initialValue)。返回的对象将在组件的整个生命周期内保持不变。


返回一个持久的对象

<div ref="useRef1" />

::: details demo 代码
<<< @/components/react/hooks/useRef/Timer.jsx
:::

上述的 demo 展示了 useRef 的以下特性:

  1. 持久性useRef 返回的 ref 对象在组件的整个生命周期内都是持久的。
  2. 不会引起组件重新渲染:与 useState 不同,修改 useRef 的 .current 属性不会引起组件重新渲染。在 demo 中,即使我们增加了 count.current 的值,组件也没有重新渲染。


与 DOM 交互

<div ref="useRef2" />

::: details demo 代码
<<< @/components/react/hooks/useRef/TextInputWithFocus.jsx
:::

这个 demo 主要展示了 useRef 如何在 React 中用于直接与 DOM 元素交互。


保存上一次的值

<div ref="useRef3" />

::: details demo 代码
<<< @/components/react/hooks/useRef/PreviousValueComponent.jsx
:::

这个 demo 主要展示了 useRef 如何在 React 中用于跟踪上一次的值。

<script setup>
import { ref } from 'vue'
import renderReact from '@components/react/renderReact'
import Timer from '@components/react/hooks/useRef/Timer'
import TextInputWithFocus from '@components/react/hooks/useRef/TextInputWithFocus'
import PreviousValueComponent from '@components/react/hooks/useRef/PreviousValueComponent'
const useRef1 = ref(null)
const useRef2 = ref(null)
const useRef3 = ref(null)
renderReact(Timer, useRef1)
renderReact(TextInputWithFocus, useRef2)
renderReact(PreviousValueComponent, useRef3)
</script>

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月12日 0

暂无评论

推荐阅读
Qp5JTyIxtbwu