2017-01-02 31 views
3

私はこの反応でspliceが正しく機能しないのはなぜですか?

if (state.indexOf(action.payload) > -1) { 
     console.log('iff----') 
     state.splice(state.indexOf(action.payload), 1); 
    } 
      console.log(state) 

    return state 

ようdeleteボタン.Iを使用して私のリストから行を削除するかしようとしていますが、それは私のコード https://plnkr.co/edit/bpSGPLLoDZcofV4DYxPe?p=preview は実際に私がリストを作成していますボタンを追加.here使用している行を削除されていませんアイテムの削除ボタンがあります。リストからアイテムを削除しようとしていますdelete button なぜそれが動作していないのか教えてください。

答えて

5

ReactまたはReduxの状態で作業するときはArray#spliceを使用しないでください。これはあなたがしたくないあなたの状態を変えます。代わりに、Array#sliceのような不変メソッドを優先します。例えば

return [...state.slice(0, index), ...state.slice(index + 1)]; 
:最後の行は、のように書くこともできることをES6で

const index = state.indexOf(action.payload); 
if (index === -1) { 
    return state; 
} 
return state.slice(0, index).concat(state.slice(index + 1)); 

関連する問題