2017-04-26 7 views
0

私はネイティブ反応するのが新鮮です& redux、私はたくさんの実験をしています。私はredux内のデータを整理する方法に関する1つの質問があります。これは、ネイティブのレスポンスでListview/Flatlistを解析する際のパフォーマンスの向上に役立ちます。Immutablejsを使ってredux内のオブジェクトを整理する方法とフラットリストで使用するネイティブの反応を読み取る

以下は、私のAPIから受け取ったデータの構造です。

const data = { 
     "abcd1": { 
      "id":"abcd1", 
      "title": "test", 
      "contentOrder": 2 
     }, 
     "abcd2": { 
      "id":"abcd2", 
      "title": "test2", 
      "contentOrder": 1 
     } 
    } 

const sortedMap = new Immutable.OrderedMap(data).sortBy((item) => item.contentOrder) 

リデューサーをImmutablemapに変換私はImmutablejsを使用してimmutablemapにこれを変更し、Reduxのストアにプッシュするよ

case ActionTypes.FETCH_SECTION.SUCCESS: 
    return state.merge({ 
     isFetching: false, 
     result: action.response, 
     error: "" 
    }) 

をマージします。私は私が見る唯一のオプションは

let newsItem = [] 
    state.get("data").valueSeq().forEach((val, index) => { 
     newsItem.push(val) 
    }); 

    and use it like this inside the component 

    <FlatList 
     data={newsItem} 
     keyExtractor={(item, index) => item.id} 
     renderItem={this._renderRow} 
    /> 

のようなすべてのアイテムを持つ配列を作成することです 、Flatlistまたはリストビューで表示するための状態からアイテムを読みたいとき今、だから私の質問は、これは良い習慣ですか?または私が欠けているより良い実装があります。

無限のスクロールも追加する必要があります。このためには、「onEndReached」というアクションを呼び出して、Apiの新しいデータでストアをマージします。

パフォーマンスのボトルネックを避けるため、これを適切な方法で実装したいので助言してください。通常、計算時間を削減するあなたのアドバイス&助け

答えて

0

ため

おかげで完全に計算を排除しようとすることによって行われます。

これは多くの場合、reselect のようなライブラリによって行われ、reduxストア内に最小状態を保存するのに役立ちます。 それらはgithubのページから、二つの第一導入ラインである:

セレクタはReduxのは 最小の可能な状態を保存することができ、得られたデータを計算することができます。セレクタは効率的です。引数の1つが変更されない限り、セレクタは に再計算されません。

+0

ありがとうございます。ありがとうございます。私はreduxストアからデータを取得するために再選択を使用しています。上記のimmutablemapからlistへの変換方法が良いのかどうか教えてください。 MapをFlatListに渡すためのリストにマップを変換するためのいくつかの追加ステップを実行しているように見えます - これを行う良い方法があると思います – Jana

関連する問題