gpt4 book ai didi

javascript - 如何在 React.createRef() 方法上设置初始值?

转载 作者:行者123 更新时间:2023-12-05 00:43:57 59 4
gpt4 key购买 nike

我使用作为当前滚动值的 ref 管理组件中的滚动。我不能使用 state 和 setState,因为当用户滚动时 setState 方法会让事情变得非常不稳定和不可能。因此,我决定使用不重新渲染组件的 refs,而是在组件重新渲染时保存值。我的问题是我无法为 ref 设置初始值。当我使用一个类组件时,我不能使用简单的 useRef react 钩子(Hook),它允许轻松设置初始值......相反,我使用 React.createRef() 但是当我将值放在括号 () 中时,它不会似乎注册它并且在用户滚动之前是未定义的。我该如何解决? enter image description here

在这里,当组件更新时(例如发送新消息时),我想确保只有当用户没有在上面某处浏览旧消息时它才会向下滚动到最新消息。 enter image description here

最佳答案

要设置由 React.createRef 创建的 ref 的初始值,请执行以下操作:

constructor(props) {
super(props):

this.scrollPosition = React.createRef();
this.scrollPosition.current = 201;
}

我确实想提一下,因为你在一个类组件中,你可能不需要一个 ref。在函数组件中,引用通常以您使用它们的方式使用:拥有一个可变对象,该对象在渲染之间持续存在。

但在类组件中,您已经拥有一个可变对象,该对象在渲染之间持续存在:this。因此,您可能可以放弃 ref 并执行以下操作:

constructor(props) {
super(props);
this.scrollPosition = 201;
}

componentDidUpdate(prevProps, prevState) {
if (this.state.message === "" && this.scrollPosition > 200) {
// ...
}
}

关于javascript - 如何在 React.createRef() 方法上设置初始值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68597545/

59 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com