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

标签 javascript reactjs use-ref

我使用作为当前滚动值的 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/

相关文章:

html - UseParallax ref hook 不适用于 NextJs 中的组件

javascript - 由于 Observable 订阅发生在组件上,因此我很难将逻辑重构到 Angular 2 应用程序的服务层中

javascript - 动态从 JSON 文件加载图像位置 - (找不到模块...)React、Next.js

node.js - 上传文件时: CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource

reactjs - MUI v5 是否提供了他们用于主页的主题或样式示例?

reactjs - useRef、useMemo、useCallback Hook 的生产用例是什么?

javascript - python 瓶 : Accessing array variable inside request POST data

javascript - 动态添加时模态弹出内容会溢出

javascript - php echo 中的 onclick 错误无效意外 token

javascript - React 下拉菜单仅切换一次