Fluxible-router で koa を使用しようとしています。ほとんどの明白な例は同様のパターンを使用しますが、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') の前に実行され、返された本文は null です。
renderToString を待つ方法も、正しいコンテキストで renderToString() を実行する方法も知りません。
ありがとう