2016-12-01 27 views
44

還元剤の還元状態の配列arr []にどのように要素を追加しますか? 私がやっているthis-React native reduxのレデューサーで配列に要素を追加するにはどうすればよいですか?

import {ADD_ITEM} from '../Actions/UserActions' 
const initialUserState = { 
    arr:[] 
} 

export default function userState(state = initialUserState, action) 
{ 
    console.log(arr); 
    switch (action.type) 
    { 
     case ADD_ITEM: 
      return { 
         ...state, 
         arr: state.arr.push([action.newItem]) 
        } 

     default: 
      return state 
    } 
} 
+0

せずに配列にアイテムを追加するには、2つの異なるオプション:これを試してみてください! –

+0

私はそれが新しいオブジェクトが返されるたびに状態が決して変異しないことを知っています。 –

答えて

101

変異

case ADD_ITEM : 
    return { 
     ...state, 
     arr: [...state.arr, action.newItem] 
    } 

OR

case ADD_ITEM : 
    return { 
     ...state, 
     arr: state.arr.concat(action.newItem) 
    } 
+0

どちらが好ましいと思われますか? – sapht

+6

@saphtもしあなたがES6でコードを書いているのであれば、より読みやすくエレガントなIMOである最初のものを好むでしょう。 –

11

push配列が、それの長さ(docs)を返さないので、何がそれにのみ参照を失って、その長さを持つ配列を交換されてやっていること、あなた持っていました。あなたが状態を変異させることになっていません

import {ADD_ITEM} from '../Actions/UserActions' 
const initialUserState = { 

    arr:[] 
} 

export default function userState(state = initialUserState, action){ 
    console.log(arr); 
    switch (action.type){ 
     case ADD_ITEM : 
      return { 
      ...state, 
      arr:[...state.arr, action.newItem] 
     } 

     default:return state 
    } 
} 
+0

ありがとう、私は同じ問題を抱えていて、あなたの答えはそれを解決しました。 –

関連する問題