如何在redux reducer中覆盖对象状态

时间:2018-01-11 05:07:24

标签: react-native react-redux

我有一个反应原生的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>
},{
 ...
}]

我猜我在这里错过了一个非常基本的细节,但是如何让一个调度来覆盖一个对象的状态而不是附加到它?

到目前为止,我发现的所有内容似乎都集中在重复数据删除,合并等方面(根据您的列表将被添加的想法,但不会发生删除)但我想要的只是一个简单的覆盖,因为通知可以被删除,标记为阅读等。

这可行吗?

0 个答案:

没有答案