在我的react-redux减速器执行任何操作后,更新状态数组

时间:2020-02-08 20:08:34

标签: arrays reactjs redux

此刻,我正在学习react-redux,已经掌握了基础知识(我相信),现在我正在尝试在状态上创建一个通知数组,该通知数组可以由多个操作填充。

但是由于是通知,所以我只想在每个操作完成后(状态更改)添加通知。

我考虑过要使用中间件类,但是这样会在对reduce进行操作之前将通知添加到数组中。

快速示例:

用户登录->调度操作->影响与登录相关的状态属性->在通知数组上添加通知

用户添加项目->调度动作->影响与项目相关的状态属性->在通知数组上添加通知

这是2个不同的动作,我可以在每个动作的if逻辑上(在reducer上)更新通知数组,但似乎是重复的代码,我将在reducer上创建通知对象,可以吗?

因此,在这种情况下,我应该在哪里调度将通知添加到通知数组的动作?

我正在寻找最佳实践

1 个答案:

答案 0 :(得分:1)

最佳做法是处理reducer中的这种情况。一次性处理数据并相应地更新状态。在您的方案中,您想在notifications完成后更新action数组。您必须重复执行此操作,因为它必须完成。这是您可以做的:

case LOGIN:
  //checks if user is valid
  return {
     ...state
     loggedIn: true,
     user,
     notifications: state.notification.push({ id: 1, message: "Logged In!" })
  }

如果要删除notification,可以执行以下操作:

case REMOVE_NOTIFICATION:
  // You can get the notification ID you want to remove from action
  let notifications = state.notification.filter(notify => notify.id !== action.id);
  return {
     ...state
     notifications
  }

希望这会对您有所帮助。