检测组件是否 'attached' 到服务器呈现的标记?

Detect if component is being 'attached' to server-rendered markup?

我正在服务器端渲染一个由 redux 驱动的 React 应用程序。在这方面一切都运作良好。我将 return 承诺的 'loader' 方法附加到路由组件,并在呈现之前将它们 运行 在服务器上附加。在客户端,加载程序在 componentDidMount.

中被调用

如果我们只是安装到服务器端标记,我想做的是不调用 componentDidMount 中的加载器。在所有其他情况下,加载器应该 运行.

我不确定如何检测是否是这种情况。有什么想法吗?

您可以跟踪单个开启状态的布尔值,以确定应用是否已至少呈现一次。 ReactDOM.render 接受第三个回调函数,您可以使用它在初始渲染完成时触发。我的代码中有这样的东西:

ReactDOM.render(
  (<Provider store={store}>
    <App>
  </Provider>),
  document.getElementById('root'),
  () => store.dispatch(initialRender)
)

您可以在 componentDidMount 方法中检查该状态,以了解它们是否应该 运行。