此刻,我正在学习react-redux,已经掌握了基础知识(我相信),现在我正在尝试在状态上创建一个通知数组,该通知数组可以由多个操作填充。
但是由于是通知,所以我只想在每个操作完成后(状态更改)添加通知。
我考虑过要使用中间件类,但是这样会在对reduce进行操作之前将通知添加到数组中。
快速示例:
用户登录->调度操作->影响与登录相关的状态属性->在通知数组上添加通知
用户添加项目->调度动作->影响与项目相关的状态属性->在通知数组上添加通知
这是2个不同的动作,我可以在每个动作的if逻辑上(在reducer上)更新通知数组,但似乎是重复的代码,我将在reducer上创建通知对象,可以吗?
因此,在这种情况下,我应该在哪里调度将通知添加到通知数组的动作?
我正在寻找最佳实践
答案 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
}
希望这会对您有所帮助。