如何在没有renderToString的情况下传递数据来表达来自express或koa的组件?

时间:2014-11-24 18:37:16

标签: express reactjs koa

由于我使用了reqwest等客户端库,我无法使用React的服务器端渲染。但是,我想将一些数据传递给我的反应组件。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

最简单的方法是api-client.jsapi.js。在您的browserify / webpack配置中,您可以设置客户端版本。对于browserify,将它放在你的package.json中(随意编辑并添加webpack)。

"browser": {
  "./path/to/api.js": "path/to/api-client.js"
}

我认为第二种选择更好,但实施起来比较困难。您可以创建API的抽象表示,其工作方式如下:

var comments = require('./api').get('comments');
comments.getById('7').then(function(comment){ ... });
comments.create({...}).then(...);

在服务器上,api.js只调用正确的函数,这些函数都返回promises。在客户端上,它返回一个promise,向服务器发出ajax请求,调用这些函数,然后发回响应,api客户端解析/拒绝它的承诺。

这允许api自动工作,并允许您执行其他操作,例如跟踪未履行的承诺,以及在客户端上预填充状态等。(例如,请参阅react-async)。