#javascript #reactjs #redux
#javascript #reactjs #redux
Вопрос:
Ниже приведен мой код
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?
Выше приведен пример, в котором я хочу обновить только имя объекта person.
Как я могу это сделать?
Ответ №1:
Используя jQuery extend, создайте клон и задайте имя пользователя:
var newState = $.extend({}, state);
newState.person.name = action.result.name;
return newState;
В противном случае, для глубокого клонирования объекта вы можете использовать Lodash cloneDeep().
Другой способ — использовать ImmutableJS, чтобы установить состояние вашего приложения как неизменяемое. Это гораздо более надежное доказательство «изменчивости» ошибок и предлагает функции для установки глубоко вложенного значения в неизменяемое. Смотрите updateIn:
return state.updateIn(['person', 'name'], () => action.result.name);
Попробуйте!