2016-12-27 14 views
2

私はReact nativeとreduxの両方で新規です。 React nativeとreduxで作業している間に、stateがredux storeになると、componentが多くレンダリングされることがわかります。ネイティブレスキュー状態に反応してパフォーマンスの問題が発生する

たとえば、私はredux状態として格納されているリストビューのデータを持っています。リストビューは画面Aに表示されます。何らかの理由で、次の画面でリストビューを変更します。データを還元状態で保存すると、次の画面でリストビューが変更されるたびに、画面Aのリストビューが自動的に更新されます。

残念ながら、リストビューのデータが変更されたときはいつでも、画面Aのすべてのコンポーネントを再レンダリングする必要があります(データをコンポーネント状態にすると、リストビューのみがすべてのコンポーネントではなくレンダリングされます)。

リストビューのデータをredux状態で保存し、すべてのコンポーネントではなく再レンダリングするだけですか?

ご意見がありましたら、お知らせください。

ありがとうございます!

+0

表示するコードはありますか? – Dherik

+1

@Dherik:私の質問を考えてくれてありがとう。私は簡単なコードを作成し、できるだけ早く質問を編集します。 – LuongTruong

+1

@Dherik:クビの答えは素晴らしいです。私は今私の問題を解決することができます。皆さん、ありがとうございました。 – LuongTruong

答えて

3

あなたはmapStateToPropsとプロパティに状態を接続している場合は、reducer内のデータを変更するたびまあ、その後、これらのpropsがあまりにも変更され、これがそうbasicly再レンダリング、再呼び出しrender()方法を引き起こします。

reducers storeで変更された場合は、stateのすべての接続先がpropsで、コンポーネントの再レンダリングが発生しています。

あなたのケースでは、問題は、ナビゲータで、AからBへナビゲートした後にコンポーネントAをバックグラウンドでマウントしたままにしておく必要がありますか?

あなたの質問に答えるために、あなたはreduxListView(いくつかのJSONリスト)のデータを格納することができ、かつconnectよりも、それはあなたのコンポーネントを持つが、Component A_2のように、Component A内の別のコンポーネントを作成し、mapStateToPropsでこれを接続してみてください。データを変更すると、Component Aではなく、Component A_2だけが再レンダリングされます。

+0

この回答の英語を修正してください。また、変数を 'this'のように見えるように' 'を使用してください。答えをより読みやすくするために書式を追加してみてください。 – martianwars

+0

これは私がすることができる最高の英語です、ごめんなさい。私はハイライトを編集しました、それは今より良いですか? – kuby

+0

もっと良い、upvoted :) – martianwars

関連する問題