重新渲染如何影响 useRef 值

发布于 2025-01-15 13:17:07 字数 367 浏览 0 评论 0原文

在组件的顶部,我使用 useRef 定义了一个变量,如下所示。

const data = {
    item1 : useRef (null),
}
console.log (data['item1'].current?.srcObject)

现在,随着逻辑通过组件,item1 的值已设置。 ref 附加到视频元素。并且在某些时候组件会重新渲染。 console.log 在第一次和第二次重新渲染时打印 srcObject 的值。但到了第三次,这个价值就消失了。 srcObject 在重新渲染之间没有显式更改。

我不完全理解 refs,但我想知道这些值是如何保留或销毁的。当然,我知道它们可能是针对特定情况的,但我仍然想了解总体思路。

At the top of my component I define a variable with useRef like below.

const data = {
    item1 : useRef (null),
}
console.log (data['item1'].current?.srcObject)

Now as the logic proceeds through the component the value for item1 is set up. The ref is attached to a video element. And at certain points the component re-renders.
The console.log prints the value of the srcObject upon the first re-render and the second. But on the third that value is lost. The srcObject is not explicitly changed in between the re-renders.

I don't fully understand refs but I'd like to know how these values are retained or destroyed. Of course I get that they maybe case specific but I'd still like to get the general idea.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧城烟雨 2025-01-22 13:17:07

您可能想要改为执行 const ref = useRef({item1: ...}) 并将当前值引用为 ref.current.item。每次渲染都会重新创建您的对象。
如果将对象放入 ref 中,ref.current 将是该对象,并且该对象不会随着 React 渲染而更新或更改。这就是 refs 的用途,您可以独立于渲染更新这些值,这些值也会在组件的生命周期内保留。

You probably want to instead do const ref = useRef({item1: ...}) and reference the current value as ref.current.item. Your object is getting re-created every render.
If you put the object inside the ref, ref.current will be the object, and that object won't update or change with react renders. That's what refs are for, values that you can update independent of rendering, that also stick around for the lifetime of the component.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文