意外的redux .filter结果

时间:2016-08-25 14:29:18

标签: reactjs redux react-redux jsx redux-thunk

所以直接回答这个问题,我在我的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()功能一定存在问题。

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

1 个答案:

答案 0 :(得分:1)

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

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