使用异步数据获取

时间:2016-03-17 15:50:24

标签: javascript asynchronous reactjs react-router redux

我们正在使用react / react-router / redux构建我们的网站

我们希望服务器端呈现应该由我们的数据源中的数据填充的页面。这个事务必须是异步的,不幸的是因为我们想要服务器端渲染,我们不能使用“componentDidMount”函数。

在服务器端呈现部分here的redux教程页面中,建议:

  

如果您使用React Router之类的东西,您可能还想表达   您的数据作为静态fetchData()方法获取依赖关系   路由处理程序组件他们可能会返回异步操作,以便您的   handleRender函数可以匹配到路由处理程序的路由   组件类,为每个组分配fetchData()结果,和   只有在Promise解决后才渲染。这种方式具体   不同路由所需的API调用与路由共存   处理程序组件定义您也可以使用相同的技术   客户端防止路由器切换页面直到   它的数据已被加载。

目前我们处理数据提取的方式。我个人不喜欢这种方法,它看起来很笨拙,而且它太过耦合到路由库。有没有更好的方法 - 希望使用标准的react / router / redux组件?

1 个答案:

答案 0 :(得分:6)

像静态fetchData()方法这样的方法是在一般情况下使用React Router处理数据获取的正确方法,尽管它可以根据需要到达子组件(例如Relay如何工作)。

您希望这样做的原因是React Router一次性解析所有匹配的路由。鉴于此,您可以同时为所有路由处理程序运行数据获取。

如果您将数据提取绑定到组件上的实例级处理程序,那么您总是会得到提取瀑布,其中组件无法获取其所需的数据,直到其所有父级都接收到所需的数据,因此向前。虽然这可能不是服务器上的一个大问题,但它在客户端上非常不理想。

如果您确实希望将数据依赖项与组件相关联,则可以考虑使用React Resolver之类的内容,但这很容易导致用户体验不佳。

相关问题