通用 React 应用程序完成服务器端首屏渲染后如何访问 refs?

How to access the refs after the universal React app finished server side first screen rendering?

我有一个通用的 React + Redux 应用程序,它在服务器端呈现第一个屏幕页面,然后浏览器端 ReactJS 将完成其余任务。

目前我遇到了一个问题,我无法使用 1. this.refs[xxx] 2.ref={(ref) => this.xxx = ref}

componentDidMount() {
    // The code in handleScroll cannot get this.xxx, as it would print the error 
    // Uncaught TypeError: Cannot read property 'xxx' of null
    window.addEventListener('scroll', this.handleScroll);
    // Code below can get the rect numbers.
    console.log(this.xxx.getBoundingClientRect());
}

handleScroll(event) {
   if (this.xxx !== null) {
     console.log(this.xxx.getBoundingClientRect());
   }
 }

我需要在用户滚动页面时获取 ReactDom 元素并对该元素执行一些操作。但是,如果我只能访问 componentDidMount() 中的引用,我该如何实现?

谢谢。

尝试调试,在 handleScroll 中放置一个断点来检查你在 'this' 中得到了什么。你能看到任何其他参考或状态吗?

如果有帮助,您可以尝试将 'this' 绑定到 handleScroll,例如:

window.addEventListener('scroll', this.handleScroll.bind(this));