尝试通过ngrx-reducer更新对象数组,我在网络上找到了一些示例(例如https://blog.strongbrew.io/Redux-best-practices/)
其中一些尝试执行state.map,但出现错误“类型'state'不存在属性'map'”。
在一个对象数组中,我想更新一个对象的属性languageStrg。这是我的代码:
export function langsReducer(state = initialState, action: LangsActions): State {
switch (action.type) {
case ActionTypes.SETLANG: {
return state.map(obj =>
obj.languagePurpose === action.payload.languagePurpose ?
{...state, languageStrg: action.payload.languageStrg} :
obj);
}
}
我该如何重写代码以使更新生效?
答案 0 :(得分:2)
您的情况将是
export function langsReducer(state = initialState, action: LangsActions): State {
switch (action.type) {
case ActionTypes.SETLANG: {
return {
...state,
languages: state.languages.map(obj =>
obj.languagePurpose === action.payload.languagePurpose
? {...obj, languageStrg: action.payload.languageStrg}
: obj
)
};
}
default:
return state;
}
}
答案 1 :(得分:0)
您的化简器应在开关箱的默认情况下返回状态。
如果要使用对象的对象,则初始状态应如下所示
const initialState = {
arr = []
}