我第一次使用React Context API。我有一个带有几个“顶级”属性的对象,并轻松弄清楚了如何更新它们。但是现在我正在尝试添加和编辑对象数组的内容。我已经添加了一种工作方式,但感到困惑,为什么它不能与我期望的方式与散布运算符一起工作。
这是我的“ corporateCustomer”上下文对象的简化版本:
companyName: string
notes: string
users[]:
id: integer
email: string
firstName: string
lastName: string
此代码似乎有效:
const addNewUser = (idx) => {
const newUser = {id: idx, email: '', firstName: '', lastName: ''};
corporateCustomer.users = [...corporateCustomer.users, newUser];
setCorporateCustomer(corporateCustomer => {
return {
...corporateCustomer,
users: corporateCustomer.users
}
});
};
但这失败了:
const addNewUser = (idx) => {
const newUser = {id: idx, email: '', firstName: '', lastName: ''};
setCorporateCustomer(corporateCustomer => {
return {
...corporateCustomer,
users: [...corporateCustomer.users, newUser];
}
});
};
这非常令人困惑,因为唯一的变化是简单的重构,但是在第二种情况下当我console.log corporateCustomer.users
时,为0,而在第一种情况下为1.。
为什么我的第二组代码失败?