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