Javascript React hooks-如何使用服务器端呈现将组件附加到侦听器?

Javascript React hooks-如何使用服务器端呈现将组件附加到侦听器?,javascript,reactjs,listener,server-side-rendering,react-hooks,Javascript,Reactjs,Listener,Server Side Rendering,React Hooks,我想将组件附加到侦听器,或者为该侦听器创建自定义挂钩 在客户端,我会这样做: useEffect(() => { const subscription = observable.subscribe({ next(value) { setValue(value); } }); return () => subscription.unsubscribe(); }, [observable]) 使用useffect附

我想将组件附加到侦听器,或者为该侦听器创建自定义挂钩

在客户端,我会这样做:

 useEffect(() => {
    const subscription = observable.subscribe({
      next(value) {
        setValue(value);
      }
    });

    return () => subscription.unsubscribe();
  }, [observable])

使用useffect附加侦听器,并在return函数中取消订阅。但useEffect在服务器端不起作用

我认为这个问题可以在更高的层次上解决(或必须解决)。如果我等到一切完成,然后在服务器上运行renderToString函数,那么一切都应该是最新的。这意味着:

  • 等待所有可能发生的异步函数(在服务器上)。因此,来自侦听器的所有数据都应该准备好并具有最终状态
  • 运行renderToString函数。这将渲染组件和挂钩
  • 所有useState钩子都将使用侦听器中的正确值进行初始化

然后在客户端,异步代码可能发生并且必须处理,useEffect钩子将完成它们的工作。

我认为这个问题可以在更高的级别上解决(或者必须解决)。如果我等到一切完成,然后在服务器上运行renderToString函数,那么一切都应该是最新的。这意味着:

  • 等待所有可能发生的异步函数(在服务器上)。因此,来自侦听器的所有数据都应该准备好并具有最终状态
  • 运行renderToString函数。这将渲染组件和挂钩
  • 所有useState钩子都将使用侦听器中的正确值进行初始化
之后在客户端,异步代码可能发生并且必须处理,useEffect钩子将完成它们的工作