React SSR:如何在客户端上首次呈现应用程序? (在componentDidMount中没有加载程序和api调用)

时间:2018-12-06 11:32:31

标签: reactjs react-redux frontend react-router-v4 ssr

我设置了React SSR应用程序,并在服务器上填充了所有必要的数据。然后,我使用该存储区正确呈现数据的React应用程序,将其转换为html字符串并将其发送给客户端。

但是我找不到任何好的解决方案来管理第一次渲染时的数据获取。我使用componentDidMount来获取数据,并使用一种方法在服务器上获取数据(例如:isomorphicFetchData)。问题是我的应用程序在客户端上呈现后,我再次在componentDidMount中重新获取数据,结果,我还显示了加载指示器,这让我感到很难过,因为我想立即看到没有任何加载器的页面。

我不想使用componentDidMount中的任何条件,老实说,我不知道要使用哪个条件-我的状态形状看起来像(index: {}, list: [], loading: false),我也不想向每个化简器(如isFetched)添加其他字段并选中此字段。

一个可能的解决方案是拥有一个单独的化简器,该化简器具有用于填充服务器上存储的所有同构动作的信息,将所有这些动作包装在一个特殊动作中,该动作将原始动作作为有效负载接收,并向其中写入中间件。处理所有这些逻辑(“如果我们已经在服务器上执行了操作,则不会在客户端上第一次执行操作”)。

解决方案看起来很繁琐。因此,我希望有人可以解释实现此目标的最简单方法,或者分享他们的流程。

0 个答案:

没有答案