意外的令牌setState到对象属性

时间:2017-04-22 01:21:21

标签: javascript reactjs

我想将状态设置为一个对象,所以我做

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

我收到了意外的令牌错误,我还尝试了user.iduser[id],这有什么不对?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

由于您无论如何都要将状态复制到单独的变量,您只需修改对象然后将其设置为状态

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

你的方式不起作用,因为你不能直接使用setState

直接为嵌套对象分配值
相关问题