2017-07-30 161 views
0

我试图通过使用过滤器函数从'状态'中删除元素,该过滤器函数应该从'state'数组中删除元素, action.index”。然而,它反而从'状态'数组中删除了最后一个元素,我似乎无法弄清楚它为什么这样做。Redux:当从数组中删除特定元素时,它将删除最后一个元素

/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 
    } 
} 

编辑

上面的代码工作正常,这是多数民众赞成删除该数组中的最后一个元素的另一个文件有问题。

+1

您是否尝试过记录'action.index'的值?也许这是由于某种原因有错误的价值。 –

+2

适合我:https://jsfiddle.net/u9ma1c4p/ –

回答

1

您可以使用splice而不是过滤器,它更精确地删除特定索引处的项目。

return state.splice(action.index,1) 

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