reactjs - 如何删除 redux 存储数组中的最后一个元素?

标签 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;
  }
}

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

最佳答案

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

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

关于reactjs - 如何删除 redux 存储数组中的最后一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52433999/

相关文章:

javascript - 如何使用 react 中对象数组的时间戳进行迭代

javascript - 使用包含 promise 的 createselector 来 react redux 容器

redux - 从中间件分派(dispatch) Action 会导致奇怪的行为

javascript - 在react条件返回中使用API​​ JSON数据

reactjs - 如何限制用户不使用带有反应和 typescript 的输入类型文件选择其他文件类型?

reactjs - 使用后退按钮时,React JS 页面不断刷新

javascript - 使用 Redux 在 Store 上创建 initialState

javascript - 相当于 redux 'getState' 来自 rxjs 中的可观察对象

javascript - 如何制作一个可以从外部控制的react组件?

javascript - 在 React 中渲染另一个组件