2016-12-01 19 views
44

Dizimdeki redüktör arr [] elemanlarını redüktörde nasıl ekleyebilirim? yapıyorum bu-React native redux redüktöründe diziye nasıl bir eleman eklerim?

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

olmadan bir diziye öğe eklemek için size devlet mutasyona gerekiyor! –

+0

Yeni nesnenin döndüğü her durumda, hiçbir zaman mutasyon geçirmediğini biliyorum. –

cevap

101

İki farklı seçenekler mutasyon

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

VEYA

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

Hangisi tercih edilebilir olarak düşünülmelidir? – sapht

+6

@sapht ES6'da kod yazıyorsanız, daha okunaklı ve zarif IMO olanı tercih edin. –

11

push dizi, ama onun uzunluğunu (docs) dönmez, yani ne ona sadece referans kaybederek uzunluğu ile dizi değiştiriyor yaptığını sen vardı. Bu deneyin:

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

Teşekkürler, aynı problemi yaşadım ve cevabınız çözüldü. –