我正在尝试将koa与fluxible-router一起使用。大多数快速示例使用类似的模式,但随后将 send() 直接用于 navigateAction。
React.renderToString() 在 executeAction 上下文中获得正确的道具。
'use strict';
var React = require('react');
var app = require('./app');
var navigateAction = require('fluxible-router').navigateAction;
function render() {
return function *render(next) {
var context = app.createContext(
{
req: this.request
, xhrContext: {
_csrf: 'pino'
}
}
);
var html = null;
context.executeAction(navigateAction, {
method: this.request.method
, url: this.request.url
}, function (err) { // this function is executed asyncronously
console.log('1');
var html = React.renderToString(context.createElement());
});
this.body = html;
console.log('2');
yield* next;
}
}
module.exports = render;
我发现填充道具的唯一方法是在 executeAction() 中运行 renderToString() 但它会异步执行,因此 console.log('2') 在 console.log('1') 和返回的正文为空。
我不知道有什么方法可以等待 renderToString ,也没有任何方法可以在正确的上下文中运行 renderToString() 。
谢谢