2017-09-25 14 views
0

ユーザーが認証されていない場合、子をマウントしないラッパーを作成しようとしています。それ以外の場合は、子コンポーネントをマウントしてレンダリングします。 は、およそ次のようになります。子コンポーネントの前にラッパーコンポーネントをマウントするにはどうすればよいですか?

export class RedirectOnCondition extends Component { 
    render(){ 
    return this.props.isAuthenticated? this.props.children : null 
    } 
} 

私の問題は、親が条件を評価する機会を持つ前に、子供がまだマウントです。子のcomponentWillMount`(およびそれに関連するすべてのAPI呼び出しが起動し失敗した)の後でのみ、親のレンダリングが子をキックして削除します。 this questionによると、これはReactの仕組みです。

どうすればこの問題を回避できますか?

+0

親はどのように条件を評価しますか?条件の初期値をfalseのままにして、ユーザーが認証された場合はtrueにすることができます。 –

+0

条件はview redux connectに渡され、正しく評価されていますが、私の問題は、親がレンダリングされる前に子がマウントされるということです。親が最初にレンダーされるようにしたい –

+0

RedirectOnCondition HOCをどのように実際に使用しているか、this.props.isAuthenticatedの仕組みについての詳細が必要です –

答えて

0

最初のレンダリングでは、親コンポーネントが、子コンポーネントの条件付きレンダリングを処理するために必要な小道具をまだ受け取っていない可能性があります。この場合、最初に小道具があるかどうかを確認することができます。

export class RedirectOnCondition extends Component { 
render(){ 
    return "isAuthenticated" in this.props ? this.props.isAuthenticated? this.props.children : null : null 
} 
} 
関連する問題