0
因此,直接回答這個問題,我在我的redux商店中有一個過濾器列表,並且有過濾器將被添加並從中刪除。意外的減少.filter結果
加法濾波器如下:
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()
功能。
我希望我已經解釋了一切。
似乎它的工作,但在邏輯上思考,如果我是正確的,這會說「過濾器鍵入不等於Action的過濾器類型,或者,過濾器名稱不等於Action的過濾器名稱「。這將刪除適合此參數的每個過濾器。 現在,我有一個過濾器對象(type = sampleType2,name = value1),它也會從存儲中移除第一個過濾器對象(type = sampleType1,name = value1)。 這不是我所期望的。 –
(type = sampleType1,name = value1)的過濾器將不會被移除,因爲filter.type!== action.filter.type返回true,使整個語句成爲true並保留數組中的元素。 – slugo