reactjs - 如何正确更新我的 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文件中的数据不会改变,状态会改变。
当我在我的组件上工作并单击“关注”和“取消关注”时,一切看起来都很好,但是当我点击组件外的其他地方时,其他操作被调度,(其他用于不同目的)并且默认部分再次执行,所以当我再次打开通知时,我所做的所有更改都消失了。
那是我的问题,如果需要我的任何解释,请询问,我将编辑我的问题。
任何帮助将非常感激。
解决方案
回顾评论:
在您的默认情况下(对于所有减速器),您需要返回减速器的当前状态,以便不相关的操作不会干扰它们的值:
default:
return state;
您还(如果需要)必须设置减速器的初始值,在这种情况下,来自数据 JSON 文件的通知:
export default function notificationsReducer(state = data, action) {...}