我正在升级到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模块看到的是实现不允许这样做。它只会选择历史,位置,参数,路线,路线,路线而不是任何自定义道具。
服务器端渲染的例子不是这么远,但是我很想知道如何处理这样的例子,因为我升级了吗?
提前致谢
答案 0 :(得分:2)
如果您使用的是Redux,请查看https://github.com/Rezonans/redux-async-connect 它类似于AsyncProps,但更适合使用Redux的项目
答案 1 :(得分:1)
查看async-props repo,它提供了一个示例以及用于处理这种同构数据获取的实用程序:https://github.com/rackt/async-props。