所以直接回答这个问题,我在我的redux商店中有一个过滤器列表,并且有一些过滤器会被添加到其中并从中删除。
按如下方式添加过滤器:
case ADD_FILTER:
return {
...state,
filters: [
...state.filters,
action.filter
]
};
按预期工作。但是当删除过滤器时:
case REMOVE_FILTER:
return {
...state,
filters: state.filters.filter(
filter => filter.type !== action.filter.type && filter.name !== action.filter.name
)
};
将从我的列表中删除所有过滤器!
这是过滤器的示例表示:
{
{
type: 'sampleType1'
name: 'value1'
},
{
type: 'sampleType2'
name: 'value1'
},
{
type: 'sampleStatus1'
name: 'value2'
},
{
type: 'sampleStatus2'
name: 'value3'
},
}
和行动:
export function addFilter(filter) {
return (dispatch) => {
dispatch({
type: ADD_FILTER,
filter
});
dispatch(load());
};
}
,
export function removeFilter(filter) {
console.log(filter);
return (dispatch) => {
dispatch({
type: REMOVE_FILTER,
filter
});
dispatch(load());
};
}
我怀疑.filter()
功能一定存在问题。
我希望我已经解释了一切。
答案 0 :(得分:1)
如果您只想删除指定的过滤器,则应使用或||
运算符:
filter => filter.type !== action.filter.type || filter.name !== action.filter.name