React 在 componentWillUnmount 时获取不到 DOM 的 scrollTop 值?

代码如下:

...
class xx extends React.Component {
  constructor(props) {
    super(props);
    this.bodyRef = React.createRef();
  }

  componentWillUpdate = () => {
    console.log(this.bodyRef.current.scrollTop);
  }

  componentWillUnmount = () => {
    console.log(this.bodyRef.current.scrollTop);
  }

  render() {
    return (
      ...
      <Grid ref={this.bodyRef}>...</Grid>
      ...
    )
  }
}
...

我是想在页面切换时拿到 Grid 中内容滚动的位置,但是在 componentWillUnmount 中打印 this.bodyRef.current.scrollTop 的值一直是 0。

在 componentWillUpdate 中打印的是正确的滚动距离。

所以是我理解有误吗,当发生 componentWillUnmount 时,“上一个” 页面的 DOM 是拿不到了?

阅读 2.9k
1 个回答

1、你在其他生命周期可以拿到 scrollTop 嘛?
2、componentWillUnmount 在你切换tab的时候会被执行嘛?

推荐问题