array.filter参数只有在{}周围时才有效

fin*_*007 2 javascript reactjs redux

我是JavaScript和Redux的新手。我正在尝试在Redux中的reducer之一中基于id过滤数组,如果我仅将id传递给回调函数,则该数组不起作用,但是如果id包裹在{id}周围,则它可以工作。

//Default store
const defaultState = {
  articles: [],
  filtercriteria: {}
};

//Reducer
const articlesReducer = (state = defaultState.articles, action) => {
  switch (action.type) {
    case "ADD":
      return [...state, action.article];
    case "REMOVE":
      //return state.filter(id => id !== action.id); //**DOES NOT WORK**
      return state.filter(({id}) => id !== action.id); // **WORKS**
    default:
      return state;
  }
  return state;
};

//Action Creator and Action
const remove = id => {
  return {
    type: "REMOVE",
    id
  };
};

//Action Dispatch
const addActionObject = store.dispatch(add());
store.dispatch(remove(addActionObject.article.id));
Run Code Online (Sandbox Code Playgroud)

Joã*_*nha 5

好吧,因为您正在使用解构

解构赋值语法是一个JavaScript表达式,可以将数组中的值或对象中的属性解压缩为不同的变量。

如果不使用解构,则可以使用如下函数:

state.filter((item) => item.id !== action.id);
Run Code Online (Sandbox Code Playgroud)

但是您可以使用解构将现有属性“ id”分配给不同的变量

state.filter(({ id }) => id !== action.id);
Run Code Online (Sandbox Code Playgroud)