我们正在使用react / react-router / redux构建我们的网站
我们希望服务器端呈现应该由我们的数据源中的数据填充的页面。这个事务必须是异步的,不幸的是因为我们想要服务器端渲染,我们不能使用“componentDidMount”函数。
在服务器端呈现部分here的redux教程页面中,建议:
如果您使用React Router之类的东西,您可能还想表达 您的数据作为静态fetchData()方法获取依赖关系 路由处理程序组件他们可能会返回异步操作,以便您的 handleRender函数可以匹配到路由处理程序的路由 组件类,为每个组分配fetchData()结果,和 只有在Promise解决后才渲染。这种方式具体 不同路由所需的API调用与路由共存 处理程序组件定义您也可以使用相同的技术 客户端防止路由器切换页面直到 它的数据已被加载。
目前我们处理数据提取的方式。我个人不喜欢这种方法,它看起来很笨拙,而且它太过耦合到路由库。有没有更好的方法 - 希望使用标准的react / router / redux组件?
答案 0 :(得分:6)
像静态fetchData()
方法这样的方法是在一般情况下使用React Router处理数据获取的正确方法,尽管它可以根据需要到达子组件(例如Relay如何工作)。
您希望这样做的原因是React Router一次性解析所有匹配的路由。鉴于此,您可以同时为所有路由处理程序运行数据获取。
如果您将数据提取绑定到组件上的实例级处理程序,那么您总是会得到提取瀑布,其中组件无法获取其所需的数据,直到其所有父级都接收到所需的数据,因此向前。虽然这可能不是服务器上的一个大问题,但它在客户端上非常不理想。
如果您确实希望将数据依赖项与组件相关联,则可以考虑使用React Resolver之类的内容,但这很容易导致用户体验不佳。