let initialState = Immutable.fromJS({
budgetItems: [],
editingBudget: [[]]
});
尝试更新budgetItems
部分中的项目,这是一个对象数组。
数组中对象的结构如下:
let initBudget = {budgetCategory: '', budgetCost: '', budgetDate: ''};
case types.UPDATE_EXISTING_BUDGET:
return state.getIn(['budgetItems']).update(
state.getIn(['budgetItems']).findIndex(function(item) {
return item.get("budgetCategory") === action.payload.budgetCategory;
}), function(item) {
return item.set(action.payload.budgetCategory);
}
);
尝试逐字替换我找到的整个对象。如果我使用值设置单个键而不是整个对象
,则上面的代码正常工作答案 0 :(得分:0)
要更新对象或数组,您需要updateIn
method。
import { fromJS, List, Map } from immutable;
const initialState = fromJS({
data: List([Map({ foo: { bar: baz } } })],
});
functionFooReducer(state = initialState, action) {
switch (action.type) {
case UPDATE:
return state
.updateIn(['data.0.foo.bar'.split('.')], (), action.value);
// ...
}
}