Javascript 意外的标记setState到对象属性

Javascript 意外的标记setState到对象属性,javascript,reactjs,Javascript,Reactjs,我想设置一个对象的状态,所以我这样做了 const user = this.state.user; this.setState({ user['id']: 123 //error here }); 我遇到了意外的令牌错误,我还尝试了user.id和user[id],出了什么问题?这不是初始化对象的有效语法。用户是一个对象,id是该对象上的属性。像这样使用setState: const user = this.state.user; this.setState

我想设置一个对象的状态,所以我这样做了

    const user = this.state.user;
    this.setState({
      user['id']: 123 //error here
    });

我遇到了意外的令牌错误,我还尝试了
user.id
user[id]
,出了什么问题?

这不是初始化对象的有效语法。用户是一个对象,id是该对象上的属性。像这样使用
setState

const user = this.state.user;
this.setState({
    user: {
        id: 123
    }
});

有关在javascript中使用对象的更多信息,请参阅。

我假设您只想更改
id
,但仍然保留
user
的其他属性。你可以这样做

const user = this.state.user;
this.setState({
    user: {
        ...this.state.user,
        id: 123
    }
});

由于要将状态复制到一个单独的变量,因此只需修改对象,然后将其设置为状态

const user = {...this.state.user};
user['id'] = 123
this.setState({
   user
});
这种方法不起作用,因为不能使用
setState