与价差操作员的困惑

时间:2019-08-14 03:28:45

标签: reactjs ecmascript-6

我第一次使用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.。

为什么我的第二组代码失败?

0 个答案:

没有答案