2016-05-03 11 views
0

質問を理解するために以下のコードを参照する必要はありませんが、シナリオを視覚化する必要がある場合に備えて追加しました。フォームがサブミットするたびに、addListメソッドが呼び出されます。Reactコンポーネントは、メソッドが呼び出されたときに完全に更新されますか?

コンポーネント自体が更新されます。しかし、私はこの動作を期待していませんでした。なぜなら、最初は自分のリストを状態に割り当てようとしたのですが、状態が変わったときに、

とにかく既に更新されていますが、なぜですか?どちらの方が効率的ですか?

+0

あなたがインポートしているリストが更新され、トップレベルのコンポーネントが再レンダリングされる可能性が高いためです。その後、getとreの更新を呼び出します –

+0

データフローがなく、送信していてメソッドが呼び出された場合、状態が変更されずにコンポーネントが再レンダリングされますか? – FurkanO

+0

送信時にページが再読み込みされますか? –

答えて

0

したがって、componentWillUpdateを追加してライフサイクルメソッドをリアクションするかどうかを確認します。

componentWillUpdate() { 
console.log('will update');  
} 

送信されたフォームは、「更新されます」というメッセージが期待どおりにコンソールに記録されます。しかし、addListを次のように更新すると、

addList(e){ 
    e.preventDefault(); 
    // nothing else. 
} 

コンソールで「更新されます」という出力は表示されません。つまり、呼び出されるメソッドは、コンポーネントを再レンダリングする必要はありません。そのようなルールはありません。この場合、恐らくTrackerReactについてです。 TrackerReactは、コンポーネントに再レンダリングを強制することがあります。