如何删除地图中的嵌套元素 Immutable.js
How to delete nested element in map Immutable.js
我的 redux 案例中有以下结构:
initialState: SearchState = fromJS({
isFiltersPanelOpen: false,
sections: {
type: { Course: {
isSelected: false,
filterValues: 42,
},
Path: {
isSelected: false,
filterValues: 12,
},
Resources: {
isSelected: false,
filterValues: 11,
}
}
}
})
我必须删除资源。我使用了 deleteIn,但我遇到了问题。当其他情况起作用时,它们会获得初始值,并且我删除的资源会恢复生机。如果我理解正确的话,我应该使用update/updateIn然后delete/deletIn。我需要一些例子。
我在这里瞎答。在没有看到任何代码的情况下,问题可能是未应用修改后的状态。
记住,不可变对象永远不会改变,突变总是会导致返回一个新对象。因此,如果您忘记 return/apply 返回的对象,您的更改将丢失。
const reducer = createReducer(initialState, {
deleteSection: (state, { id }) => {
return state.deleteIn(['sections', 'Resources']);
},
deleteSectionToo: (state, { id }) => {
// Update can be used too, but it is mostly useful when you want to change something.
// e.g. add/remove an item in a sub-list.
return state.update('sections', (sectionsState) => {
return sectionsState.delete('Resources');
});
}
};
更多示例,consult the docs。
我的 redux 案例中有以下结构:
initialState: SearchState = fromJS({
isFiltersPanelOpen: false,
sections: {
type: { Course: {
isSelected: false,
filterValues: 42,
},
Path: {
isSelected: false,
filterValues: 12,
},
Resources: {
isSelected: false,
filterValues: 11,
}
}
}
})
我必须删除资源。我使用了 deleteIn,但我遇到了问题。当其他情况起作用时,它们会获得初始值,并且我删除的资源会恢复生机。如果我理解正确的话,我应该使用update/updateIn然后delete/deletIn。我需要一些例子。
我在这里瞎答。在没有看到任何代码的情况下,问题可能是未应用修改后的状态。
记住,不可变对象永远不会改变,突变总是会导致返回一个新对象。因此,如果您忘记 return/apply 返回的对象,您的更改将丢失。
const reducer = createReducer(initialState, {
deleteSection: (state, { id }) => {
return state.deleteIn(['sections', 'Resources']);
},
deleteSectionToo: (state, { id }) => {
// Update can be used too, but it is mostly useful when you want to change something.
// e.g. add/remove an item in a sub-list.
return state.update('sections', (sectionsState) => {
return sectionsState.delete('Resources');
});
}
};
更多示例,consult the docs。