私はPersonCreate
というコントローラを持っています。このコンポーネントでは、認証されたユーザー(this.props.app.session.user.role.isAdmin()
)の役割をチェックし、値に応じて何らかのフォームをレンダリングする必要があります。私が真を返さない限りコンポーネントの取り付けを延期する
問題は、セッションオブジェクトを生成するのに時間がかかることです。 http://.../person/create
のエンドポイントを参照すると、セッションがまだ生成されていないため、NULLポインタ例外をスローするthis.props.app.session.user.role.isAdmin()
を呼び出しようとします。
ルーターファイルは次のようになります。
class RootComponent extends React.Component<any, any> {
private generateSession() {
store.dispatch(SessionActions.generate());
}
public render() {
return (
<Router history={browserHistory}>
<Route path="/" component={Layout}>
<Route path="app" onEnter={this.generateSession}>
<Route path="person">
<Route path="create" component={PersonCreate} />
<Route path="update/:id" component={PersonUpdate} />
<Route path="delete/:id" component={PersonDelete} />
...
基本的にstore.dispatch(SessionActions.generate())
はasyncronousもののシリーズを行いSaga
を生成しました。 (トークンの検証、セッション情報の取得、ローカルストレージのリフレッシュなど)。完了後にコンポーネントのレンダリングを開始する必要があります。
アイデア?
あなたが見ている問題:あなたはここにこのアプローチの詳細を読むことができ
:
そして、この「親」で
は中(EnsureLoggedInContainer)コンポーネントは次のような何かをレンダリングレンダリングハイジャックと呼ばれています。あなたはそれについてgoogleすることができます。これを行う最善の方法は 'HOC'です。 Readmore on it [here](https://medium.com/@franleplant/react-higher-order-components-in-depth-cf9032ee6c3e)。一度読んだら、何か問題があれば、私たちに連絡してください。 – Panther