如何正确更新我的redux状态?

时间:2020-01-22 04:15:20

标签: reactjs redux react-redux

我遇到了一个问题,我是Redux的新手,我只是在玩它,所以我有一个问题,我创建了一个数据json文件,我从我的reducer中获取了数据,一切正常很好,这是我的减速器:

import update from "immutability-helper";

import data from "../../../../data";

export default function notificationsReducer(state, action) {
  switch (action.type) {
    case "NOTIFICATIONS_EDIT_TO_FOLLOW":
      return update(state, {
        [action.id]: {
          follwing: { $set: false }
        }
      });
      break;
    case "NOTIFICATIONS_EDIT_TO_UNFOLLOW":
      return [];
      break;
    default:
      return data.notifications;
  }
}

如您所见,在默认部分中,我返回data.notififications,这当然会引起问题,因为json文件中的数据不会更改,状态也会更改。

当我在组件上工作并单击“跟随”和“取消跟随”并填充所有内容时,一切看起来都很好,但是当我在组件外部的其他位置单击时,将分派其他操作(其他目的不同的操作)和默认部件再次执行,因此当我再次打开通知时,所做的所有更改都消失了。

那是我的问题,如果需要我的任何解释,请问一下,我会编辑我的问题。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

从评论中删除:

在默认情况下(对于所有减速器),您需要返回减速器的当前状态,以使不相关的动作不会干扰其值:

default:
  return state;

还(如果需要)还必须设置reducer的初始值,在这种情况下,来自数据JSON文件的通知:

export default function notificationsReducer(state = data, action) {...}