如何为服务器端React创建事件侦听器



我正在开发一个需要事件侦听器的应用程序。提供给此事件的侦听器的功能正在与DOM交互。组件安装时也需要运行相同的功能:

...
componentDidMount() {
    this.getWidth();
    window.addEventListener('resize', this.getWidth);
}
getWidth = () => {
    const elem = this.elem.clientWidth;
    ...
}
render() {
    return(
        <div>
            <SomeComponent
                ref={(elem) => this.elem = elem}
            />
        </div>
    );
}
...

由于此应用程序最初呈现服务器端,因此componentDidMount生命周期方法不运行,因此,getWidth函数不运行,并且事件侦听器未添加到窗口对象中。我该如何使这项工作?

来自文档(https://facebook.github.io/react/docs/react-dom-server.html):

如果您在已经具有此的节点上调用reactdom.render() 服务器渲染的标记,React将保留它,并且仅附加事件 处理程序,允许您进行表现非常出色 经验。

最新更新