【问题标题】:writing koa middleware for fluxible-router (async executeAction)为fluxible-router编写koa中间件(异步executeAction)
【发布时间】:2015-06-18 19:24:36
【问题描述】:

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

谢谢

【问题讨论】:

    标签: router koa fluxible


    【解决方案1】:

    这是一种方法

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

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

    【讨论】:

      猜你喜欢
      • 2017-05-23
      • 2017-01-18
      • 2016-10-03
      • 2017-01-04
      • 1970-01-01
      • 2021-06-29
      • 1970-01-01
      • 2017-11-30
      • 1970-01-01
      相关资源
      最近更新 更多