0

我正在尝试将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() 。

谢谢

4

1 回答 1

0

这是一种方法

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

或者只是产生 context.executeAction(...)

于 2015-06-22T17:48:07.593 回答