Redux FlatList:更新部分数据
Redux FlatList: update partially data
如何使用 Flatlist 和 React-Native 在 redux 中部分更新我的数据?
我已经尝试了几个 'immutable' 库,但没有一个是完美的。
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 }, ];
reducer 应该是什么样子的?
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: ??? <---
};
}}
非常感谢您的帮助!
如果它是关于合并两个(旧的和新的),你可以展开数组并将更新的列表添加到它,如下所示:
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,
],
};
}
}
如何使用 Flatlist 和 React-Native 在 redux 中部分更新我的数据? 我已经尝试了几个 'immutable' 库,但没有一个是完美的。
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 }, ];
reducer 应该是什么样子的?
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: ??? <---
};
}}
非常感谢您的帮助!
如果它是关于合并两个(旧的和新的),你可以展开数组并将更新的列表添加到它,如下所示:
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,
],
};
}
}