0
質問にまっすぐに進みますが、私はreduxストアにフィルタリストがあります。フィルターが追加され、そこから削除されます。予期せぬ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()
機能に問題がなければならないことを疑っています。
私はすべてを説明してくれることを願っています。
を私が正しいんだ場合、論理的にその作業が、思考が、これは「フィルターを言うだろうと思われますアクションのフィルタタイプと等しくないタイプ、またはアクションのフィルタ名と等しくないフィルタ名」を選択します。この引数に適合するすべてのフィルタが削除されます。 ここでは、フィルタオブジェクト(type = sampleType2、name = value1)を使用して、最初のフィルタオブジェクトをstore(type = sampleType1、name = value1)から削除します。 これは私が期待するものではありません。 –
'filter.type!== action.filter.type'がtrueを返すので、(type = sampleType1、name = value1)のフィルタは削除されません。 – slugo