reactjs - React:上下文挂钩,将对象推入数组
问题描述
我得到的错误是Cannot find name '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 )},
解决方案
此时只有状态对象在范围内(作为减速器的参数提供),尝试在您收到错误时切换objectArray
。state.objectArray
而且,您需要不可变地附加该值以使其正确(reducers 规则),因此您需要使整行类似于:
objects: { ...state.objects, objectArray: [...state.objectArray, action.value]},
使用旧值和要添加的新值创建一个新数组。
推荐阅读
- typescript - 合并记录
用一把不同类型的钥匙? - ssas - SSIS 多维数据集进程失败
- python - 从范围列表中删除一个数字
- r - 如何计算 R 中 n 维的欧几里得距离?
- filter - KendoGrid - 过滤对象的属性
- amazon-web-services - 在 cognito 中忘记密码(如果电子邮件未验证)
- java - 将长整数转换为字符/符文
- r - 我想设置这两个 geom_point() 点的图例
- java - 在另一个实例中从事务方法调用 spring 非事务方法时,事务是否会传播?
- javascript - 如何在元标记中提供 base64 编码的数据 url