2017-03-16 43 views
2

reactyを使ってreduxを使用しています。ただlastMessage後:私は減速を更新し、キー/値(ジョー名 ')を追加したいレデューサーの入れ子状態を更新するReact Redux

{ 
XSAUZHNAKZJ : //id User 
    { 
    AZRAERAZEAZ : //id Conversation - always one object 
    { 
    timestamp : 123123123, 
    lastMessage : "hello" 
    } 
    }, 
BLZEJARNAELKR : //id User 
    { 
    AANALZKJAZ : //id Conversation - always one object 
    { 
    timestamp : 123123123, 
    lastMessage : "hello" 
    } 
    } 
} 

:ここに私の減速状態です。私はaction.payloadにname(ex:joe)とid User(ex:XSAUZHNAKZJ)の値を持っています。ここに私のコードがありますが、私は正しいことをしていないようです。

export default function(state={},action){ 
    switch(action.type){ 
    case 'GET_USER_INFO': 
     var tempState = Object.assign({}, state); 
     var conversation = tempState[action.payload.key]; 
     var conversationDetail = conversation[Object.keys(conversation)[0]]; 
     conversationDetail['name']=action.payload.val().name; 
     return tempState; 
    default: 
     return state; 
    } 
} 
+0

を新しいオブジェクトを割り当てるためにimmutability helperをご利用くださいだから、働いていると、これはそれを行うための正しい方法であれば、あなたは求めていますか? – MrCode

+0

それは働いていませんが、Shubham Khatriの答えは仕事です! – Zoomzoom

+0

それはあなたの 'action.payload.val()。name'のように見えます。残りの部分はうまく見えます。 – MrCode

答えて

2

ネストされた状態に

import update from 'immutability-helper'; 

export default function(state={},action){ 
    switch(action.type){ 
    case 'GET_USER_INFO': 
     return update(state, { 
      [action.payload.key]: { 
        [Object.keys(state[action.payload.key])[0]]: { 
          $merge: {name: action.payload.name} 
        } 
      } 
     }) 
    default: 
     return state; 
    } 
} 
関連する問題