2016-10-27 148 views
0

我正在使用mozilla客户端会话与express /节点,并试图在我的标准*请求中弄清楚如何将session.user传递给react-router。我知道这可能是我错过的一件容易的事情,也许我会自己得到它,但我已经尝试过,但我失去了它在混合中的某个地方未定义。有什么想法吗?如果我能做到这一点,将取消任何和所有限制我的服务器上渲染/通用React路由器服务器渲染客户端会话信息

app.get("*", (req: any, res) => { 
    var props = { 
     user: res.locals.user 
    }; 
    var html = renderToString(<SiteRouter history={createMemoryHistory(req.url)} {...props} />); 
    res.render("layout", { ReactMarkup: html, meta: getMeta(req.url) }); 
    res.end(); 
}); 

export class SiteRouter extends React.Component<{ history?: any, routes?: any, children?: any, user?: any }, {}> { 
    render() { 
     var props = { 
      user: this.props.user 
     }; // user is alive here but I seem to be losing it going into the router and then its (router's) child routes. 
     return <Router history={this.props.history} routes={routes} {...props} />; 
    } 
} 

回答

0

所以你不能附加道具的实际反应路由器。我必须通过对路由模块的回调将它们从快递传递下来,以将数据传递到顶层组件并同步呈现它。可能不是最佳实践,但整个服务器渲染概念似乎遍布各处。不管怎么说,多谢拉。

相关问题