我有一个反应原生的ScrollView,用于基于提取的通知。对象已正确连接到存储,并且提取/分派正确更新存储。在第一次拉动时,所有内容都以正确的顺序正确填充。
然而,在第二次获取时,state.notifications不会被新值替换。相反,它将它们全部加在一起,许多字段都是重复的。最初这只是一个提取,但我希望能够从其他屏幕更新它,所以将其切换为redux调用。
我对redux和react-native都很新,但似乎无法找到完全覆盖商店的解决方案,因此ScrollView不会保留以前的项目。它需要是一个完整的覆盖,因为提取可能会显示项目已被删除或更改,而不仅仅是添加。
我的减速机非常简单,看起来像这样:
export const notificationData = (state = 0, action) => {
switch (action.type) {
case 'UPDATENOTIFICATIONS':
return (state = action.val);
default:
return state;
}
}
调度也很简单,并且在获取响应中正确完成(尽管添加到现有数据中):
store.dispatch({
type: 'UPDATENOTIFICATIONS',
val: responseJson.notifications
});
responseJson.notifications是一组通知,如下所示:
[{
notificationid: 440,
postid: 145,
commentid: 374,
notificationtime: '2018-01-11T00:00:00.697Z',
isread: true,
<some other field>
},{
...
}]
我猜我在这里错过了一个非常基本的细节,但是如何让一个调度来覆盖一个对象的状态而不是附加到它?
到目前为止,我发现的所有内容似乎都集中在重复数据删除,合并等方面(根据您的列表将被添加的想法,但不会发生删除)但我想要的只是一个简单的覆盖,因为通知可以被删除,标记为阅读等。
这可行吗?