意外的 redux .filter 结果

Unexpected redux .filter result

所以直接进入问题,我的 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() 函数一定有问题。

我希望我已经解释了一切。

如果您只想删除指定的过滤器,您应该使用 or || 运算符:

filter => filter.type !== action.filter.type || filter.name !== action.filter.name