由于我使用了reqwest等客户端库,我无法使用React的服务器端渲染。但是,我想将一些数据传递给我的反应组件。有没有办法做到这一点?
答案 0 :(得分:2)
最简单的方法是api-client.js
和api.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)。