服务器端渲染与反应路由器与数据获取

时间:2016-01-04 16:37:02

标签: reactjs react-router

我正在升级到React Router的版本1,并且无法让我的代码的数据获取端在服务器上工作,即初始服务器端渲染。

我要做的是根据所选路由从服务器获取数据。每个组件都有一个静态fetchData方法,并且还有一个全局数据方法,我构建数据然后传递到路由配置中定义的控制器视图组件。

我的代码如下:

match({routes, location: req.url}, (err, redirectLocation, renderProps) => {

  fetchData(renderProps).then((data) => {
      //page specific data
      return data;
    }).then((data) => {
      //global data
      getGlobalData().then((appData) => {

        data.app = appData;

        data = Immutable.fromJS(data);

        let templateLocals = {
          "data": data
        };    console.log('trying to render');
      templateLocals.content = renderToString(
    <RoutingContext {...renderProps} data={data}/>
  );
  res.send(layout(templateLocals));
    });

  });
});

我希望像以前一样使用<Handler> pre V1.0将我的数据作为道具传递到应用程序中(我可以看到数据是正确的,当我将其传递给RoutingContext组件时)。但是我从RoutingContext模块看到的是实现不允许这样做。它只会选择历史,位置,参数,路线,路线,路线而不是任何自定义道具

服务器端渲染的例子不是这么远,但是我很想知道如何处理这样的例子,因为我升级了吗?

提前致谢

2 个答案:

答案 0 :(得分:2)

如果您使用的是Redux,请查看https://github.com/Rezonans/redux-async-connect 它类似于AsyncProps,但更适合使用Redux的项目

答案 1 :(得分:1)

查看async-props repo,它提供了一个示例以及用于处理这种同构数据获取的实用程序:https://github.com/rackt/async-props