Redux FlatList:更新部分数据

时间:2018-03-22 14:55:01

标签: react-native redux immutability reducers react-native-flatlist

如何使用Flatlist和React-Native部分更新redux中的数据? 我已经尝试了几个“不可变”的库,但没有任何工作完美。

Redux商店:

FlatListData: [ { a: 1, aa: 11 }, { b: 2, bb: 22 }, { c: 3, cc: 33 }, { d: 4, dd: 44 }, ];

下载新数据:

updatedData: [ { b: 2, bb: 44 }, { c: 6, cc: 33 }, { e: 8, ee: 90 }, ];

减速机应该如何?

const INITIAL_STATE = { FlatListData: [ { a: 1, aa: 11 }, { b: 2, bb: 22 } ] };

export default function(state = INITIAL_STATE, action) {
      switch (action.type) {
        case UPDATE_RATE:
          return {
            ...state,
            FlatListData: ???   <---
           };
          }}

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

如果是关于合并两个(旧的和新的),你可以传播数组并将更新的列表添加到它,如下所示:

export default function(state = INITIAL_STATE, action) {
  switch (action.type) {
    case UPDATE_RATE:
      return {
        ...state,
        FlatListData: [
          ...state.FlatListData,
          ...action.updatedData,
        ],
      };
  }
}

如果需要替换现有值,则需要使用公共密钥(某些ID)来标识现有记录并对其进行过滤。假设您的数组对象具有id:

export default function(state = INITIAL_STATE, action) {
  switch (action.type) {
    case UPDATE_RATE:
      return {
        ...state,
        FlatListData: [
          ...state.FlatListData.filter((x) => 
            !action.updatedData.find((y) => y.id === x.id)),
          ...action.updatedData,
        ],
      };
  }
}