Redux использует reducers для изменения состояния приложения в ответ на действие.
Ключевым требованием является то, что редуктор не может изменять существующий объект состояния; он должен создать новый объект.
Плохой пример:
import {
ACTIVATE_LOCATION
} from './actions';
export let ui = (state = [], action) => {
switch (action.type) {
case ACTIVATE_LOCATION:
state.activeLocationId = action.id;
break;
}
return state;
};
Хороший пример:
import {
ACTIVATE_LOCATION
} from './actions';
export let ui = (state = [], action) => {
switch (action.type) {
case ACTIVATE_LOCATION:
state = Object.assign({}, state, {
activeLocationId: action.id
});
break;
}
return state;
};
Это хороший вариант использования Immutable.js.