如何使用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: ??? <---
};
}}
非常感谢你的帮助!
答案 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,
],
};
}
}