2017-07-30 88 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個項目。