2016-10-21 60 views
2

下面是我的代碼如何僅在Redux中更新我的reducer的一個值?

function customMsg(state, action) { 
state = state || { 
    person: { 
     isFetching: false, 
     didInvalidate: false, 
     name: "", 
     height: "", 
    } 
}; 

switch(action.type) { 

    case ACTION_TYPES.PERSON.FETCH_PERSOn_CONTENT_SUCCESS: 
     return $.extend({}, state, { 
      person.name: action.result.name 
     }); 

    default: 
     return state; 
} 
} 

如何,我只更新我的終極版減速的一個值? 上面是一個我只想更新人物對象名稱的例子。 我該怎麼做?

回答

5

使用jQuery擴展,創建一個克隆,並設置人名稱:

var newState = $.extend({}, state); 
newState.person.name = action.result.name; 
return newState; 

否則,深入克隆了一個對象,你可以使用lodash cloneDeep()

另一種方法是使用immutableJS將您的應用程序狀態設置爲不可變。這是更多的bug「可變」的證明,並提供函數來設置一個不可變的深層嵌套值。見updateIn

return state.updateIn(['person', 'name'],() => action.result.name); 

試試吧!

相關問題