reactjs - React:上下文钩子,将对象推入数组
我得到的错误是 无法找到名称 'objectArray'。
interface StateInterface {
objects: {
objectArray: object[];
selected: object;
};
}
const InitialState: StateInterface = {
objects: {
objectArray: [],
selected: {},
},
};
const Reducer = (state: StateInterface, action: any) => {
switch (action.type) {
case 'SELECTED':
return {
...state,
objects: { ...state.objects, selected: action.value },
};
case 'ADD_OBJECT':
return {
...state,
objects: { ...state.objects, objectArray: objectArray.push(action.value )},
// ^---- Cannot find name 'objectArray'.ts(2304)
};
default:
return state;
}
};
我也尝试了
objects: { ...state.objects, objectArray: ...action.value )},
答案#1
在那一点上,只有 state 对象在作用域内(作为参数提供给 reducer),尝试在出现错误的地方将 objectArray 替换为 state.objectArray。
但你还需要以不可变的方式附加该值才能正确(这是 reducer 的规则),所以你需要把整行代码写成类似这样:
objects: { ...state.objects, objectArray: [...state.objectArray, action.value]},
创建一个包含旧值和你正在添加的新值的新数组。