我有一个对象如下:
const initialState = {
filters: {
categories: [
{ text: "a", checked: true },
{ text: "b", checked: false },
{ text: "c", checked: false },
],
brands: [
{ text: "d", checked: false },
{ text: "e", checked: true },
{ text: "f", checked: false },
],
types: [
{ text: "g", checked: false },
{ text: "h", checked: true },
],
},
};
我需要在单击时将所有选中的字段更改为“false”。我正在使用redux,这是我的初始状态。下面是我的函数,但它不能正常工作。这意味着“state.filters.map不是一个函数”。
const filtersReducer = (state = initialState, action) => {
switch (action.type) {
case "RESET_ALL_STATES":
return {
...state,
filters: {
...state.filters,
...state.filters.map((filter) =>
filter.map((option) =>
option.checked === true ? { ...option, checked: false } : option
)
),
},
};
default:
return state;
}
};
1条答案
按热度按时间bkhjykvo1#
使用以下解决方案:
Object.entries
遍历filter
对象将每个数组的元素值重置为checked: false
.在减速器的上下文中,这可能看起来像: