【问题标题】:Redux: When removing specific element from array, it removes the last element insteadRedux:从数组中删除特定元素时,它会删除最后一个元素
【发布时间】:2017-07-30 14:08:32
【问题描述】:

我试图通过使用过滤器函数从“状态”中删除一个元素,该函数应该从“状态”数组中删除由“action.index”指定的索引处的元素。然而,它反而从“状态”数组中删除了最后一个元素,我似乎无法弄清楚它为什么这样做。

/reducer.js

import {
    ADD_ITEM,
    DELETE_ITEM,
} from './actions';

export default function addItems(state=[], action){
  switch (action.type) {
    case ADD_ITEM:
      return [
        ...state,
        action.item
      ]
    case DELETE_ITEM:
      return state.filter((_, i) => i !== action.index);
    default:
      return state
  }
}

编辑

上面的代码工作正常,这是另一个文件中的问题,它从数组中删除了最后一个元素。

【问题讨论】:

  • 您是否尝试过记录action.index 的值?也许由于某种原因这有错误的价值。
  • 对我来说很好:jsfiddle.net/u9ma1c4p

标签: javascript arrays reactjs redux react-redux


【解决方案1】:

您可以使用splice 代替过滤器,这样可以更精确地删除特定索引处的项目。

return state.splice(action.index,1)

第二个参数 '1' 表示从 action.index 开始删除 1 项。

【讨论】: