如何删除redux store数组中的最后一个元素?

ric*_*ck1 5 reactjs redux

我有以下代码:

const initialState = {
  searchItems: ['Item'],
}
export default (state = initialState, action) => {
  switch (action.type) {
    case BACKSPACE_REMOVE_SEARCH_ITEM:
      console.log(state.searchItems);
      return {
        ...state,
        searchItems: [...state.searchItems.splice(-1)],
      };
    default:
      return state;
  }
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试执行这样的操作时,我收到了与之前相同的数组,里面有 'Item',它不会'删除它。哪里有问题?

dev*_*kan 5

.splice返回删除的元素。实际上,您根本不应该使用.splice,因为它会改变原始数组。我知道你在传播原始的,但传播的语法是浅拷贝。所以,要小心。.slice最好它还返回已删除的。在这种情况下,您需要使用.slice.concat可能的组合,或者您可以使用.filter.

return {
    ...state,
    searchItems: state.searchItems.filter( (_,i) => 
        i !== state.searchItems.length-1
    ),
};
Run Code Online (Sandbox Code Playgroud)