首页 > 解决方案 > 如何正确更新我的 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文件中的数据不会改变,状态会改变。

当我在我的组件上工作并单击“关注”和“取消关注”时,一切看起来都很好,但是当我点击组件外的其他地方时,其他操作被调度,(其他用于不同目的)并且默认部分再次执行,所以当我再次打开通知时,我所做的所有更改都消失了。

那是我的问题,如果需要我的任何解释,请询问,我将编辑我的问题。

任何帮助将非常感激。

标签: reactjsreduxreact-redux

解决方案


回顾评论:

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

default:
  return state;

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

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

推荐阅读