2016-09-27 4 views
0

私はいくつかのReactコンテナとコンポーネントが完璧に動作していますが、私はまだReactを勉強して学習しています。私の関数componentDidMountが、私が作業している新しいコンポーネントで実行されるとき、コンポーネントに必要なすべてのデータがコンポーネントで利用可能であると表示されますが、this.props.loadingtrueに設定されています。React:this.props.loadingの値は何を制御しますか?

componentDidMount() { 
    const a = 100; //breakpoint here 
    if (this.props.loading === false){ 
     const {myDataID} = this.props; 
     this.fromID = Meteor.userId(); 
     this.toID = myDataID; 

     this.subscribe(fromID, toID); 
    } 
} 

this.props.loadingの値を制御するものは何ですか? this.props.loadingがfalseに設定されていると、componentDidMountが再度実行されますか?

答えて

1

prop,this.props.loadingは、親コンポーネントによって設定されます。あなたのコンポーネントがレンダリングを実行するために必要なすべてのデータを持っていると感じたらthis.props.loadingtrueまたはfalseであるかどうかをチェックする必要があります。ネットワークエラーのために必要なデータが得られないことがあるため、このチェックを行うことをお勧めします。これはあなたのコードを壊すでしょう。レンダリング機能は、初期レンダリングが発生する直前に、クライアントとサーバー上で一度呼び出されます

、両方を完了した後

componentDidMountは一度だけ呼び出されます。このメソッド内でsetStateを呼び出すと、render()は更新された状態を表示し、状態が変化しても一度だけ実行されます。

しかし、あなたは親にloading小道具を変更すると、componentWillReceivePropsは、あなたの変更である、nexPropで呼び出されます。詳細情報については

this.props.loadingで値を制御何check here

1

コンポーネントをレンダリングするコンポーネント。私。このcomponentDidMount方法は、コンポーネントBarで、かつFoorender方法である場合:

render() { 
    return <Bar loading={computeLoadingState()} /> 
} 

たびFoo再レンダリングされ、Barloadingの新しい値を潜在的に渡されます。

this.props.loadingがfalseに設定されている場合、再度componentDidMountが実行されますか?

号はdocumentationは言う:

が唯一のクライアント(いないサーバー上)で、一度に呼び出され、初期のレンダリングが発生した直後。

Other methodsただし、小道具が変更されると必ず呼び出されます。

関連する問題