【发布时间】:2020-02-09 14:04:03
【问题描述】:
我在 React Redux 中有以下 reducer:
export const reducer = (state = initialStateData, action) => {
switch (action.type) {
case Action.TOGGLE_ARR_FILTER:
{
const subArr = state.jobOffers.filters[action.key];
const filterIdx = subArr.indexOf(action.value[0]);
const newArr = { ...state.jobOffers.filters
};
if (filterIdx !== -1) {
newArr[action.key].splice(filterIdx, 1);
} else {
newArr[action.key].push(action.value[0]);
}
return {
...state,
jobOffers: {
...state.jobOffers,
filters: {
...newArr,
},
},
};
}
这是我的目标:
const initialStateData = {
jobOffers: {
filters: {
employments: [],
careerLevels: [],
jobTypeProfiles: [],
cities: [],
countries: [],
},
configs: {
searchTerm: '',
currentPage: 1,
pageSize: 5,
},
},
};
reducer 似乎可以正常工作,它可以正确切换值。
但是:Redux 总是显示“状态相等”,这很糟糕,因为它无法识别更改。
有人可以帮忙吗?我假设我正在返回一个新对象..
【问题讨论】:
-
你可以试试this。
-
你已经用 splice 和 push 改变了状态,这意味着引用仍然是一样的,你必须用 silce 改变它以获得一个新的副本
标签: javascript reactjs object redux