2

我正在做一个小样板项目,使用 node & express 使用 ReactJS 进行服务器端渲染。

我想知道如何识别Handler我的回调中的变量何时代表NotFound工厂,这样我就可以用 express抛出404 错误。就像是:res.status(404)

router.run(function(Handler) {

    // HOW TO KNOW `Handler` corresponds to `NotFound`?
    // I WANT TO USE SOMETHING LIKE `res.status(404)` HERE...

    // Render React to a string, passing in our fetched tweets
    var markup = React.renderToString(
        Handler(state)
    );

    // Render our 'home' template
    res.render('index', {
        markup: markup, // Pass rendered react markup
        state: JSON.stringify(state) // Pass current state to client side
    });
});

如果您想全面了解该文件,请随时访问其在 github 上的页面: https ://github.com/sergiocruz/react-boilerplate/blob/master/server.js

如果您对此感到好奇,也可以在这里浏览整个项目:https ://github.com/sergiocruz/react-boilerplate

4

1 回答 1

2

Handler参数实际上是路由器组件。如果将第二个参数添加到回调中state,则可以评估路由。

router.run(function(Handler, state) {
    console.log(state.routes);
    ...
}

routes属性是一个数组,其中包含与请求匹配的每个路由的一个元素,按照它们在路由映射中的嵌套顺序排列。

如果您查看路由数组中的元素,您会发现您可以评估属性,如pathname(路由名称)、handler对象等。

于 2015-01-20T02:36:10.637 回答