0

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() を実行する方法も知りません。

ありがとう

4

1 に答える 1

0

これはそれを行う方法です

https://gist.github.com/cesarandreu/03f6c584a40c62812deb

または単に context.executeAction(...) を生成します

于 2015-06-22T17:48:07.593 に答える