2016-10-27 8 views
0

私はexpress/nodeでmozillaクライアントセッションを使用しています。私の標準*要求内で、session.userをどのように反応ルータに渡すことができるかを試しています。私はそれがおそらく私が行方不明であり、おそらく私はそれを自分で得ることは簡単ですが、私は試してみましたが、私はミックスのどこかで未定義にそれを失っています。何かご意見は?私がこれを行うことができれば、私のサーバーのレンダリング/ユニバーサルの制限がすべて取り除かれます。React Router Serverレンダリングクライアントセッション情報

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

したがって、実際の反応ルータには小道具を取り付けることはできません。エクスプレスからルートモジュールのコールバックを使用してデータを最上位コンポーネントに渡し、同期させてレンダリングする必要がありました。おそらくベストプラクティスではないかもしれませんが、このサーバー全体のレンダリングのコンセプトは、あらゆる場所の地図上にあるようです。とにかく、ありがとう。

関連する問題