以下是我的代码
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;
}
}
如何在Redux中仅更新reducer的一个值? 以上是我只想更新person对象名称的示例。 我怎么能这样做?
答案 0 :(得分: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);
试试吧!