Reactjs 添加一个对象到状态

Mig*_*ens 2 javascript flux pusher reactjs

当新成员登录时,我使用 Reactjs 来填充state.users 。

以下代码正在运行

var users = this.state.users;
users.push(member);
this.setState({users: users});
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将所有内容包装在一行代码中时,它失败了

this.setState({users: this.users.state.push(member)});
Run Code Online (Sandbox Code Playgroud)

当我尝试上述操作时,我的 list.jsx 中出现错误

未捕获的类型错误:this.props.users.map 不是函数

知道是什么原因造成的吗?我在想,当我使用单行解决方案时,错误类型的对象被传递到状态中?

谢谢你!

Ale*_* T. 5

发生这种情况是因为.push返回新长度(整数),而不是数组,

var data = {
    users: []
};

data.users = data.users.push(10);
console.log(typeof data.users); // number
Run Code Online (Sandbox Code Playgroud)

.push- 返回调用该方法的对象的新长度属性。

您可以使用.concat代替.push

this.setState({
   users: this.state.users.concat(member)
});
Run Code Online (Sandbox Code Playgroud)

或者

this.setState({
  users: [...this.state.users, member]
});
Run Code Online (Sandbox Code Playgroud)