Reactjs将一个对象添加到状态

时间:2015-08-05 10:50:25

标签: javascript reactjs pusher flux

我使用reactjs在他或她登录时使用新成员填充 state.users

以下代码正在运作

var users = this.state.users;
users.push(member);
this.setState({users: users});

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

this.setState({users: this.users.state.push(member)});

当我尝试上述操作时,我的list.jsx

中出现了更多错误
  

未捕获的TypeError:this.props.users.map不是函数

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

谢谢!

1 个答案:

答案 0 :(得分:2)

这是因为.push返回新的长度(int数),而不是数组,

var data = {
    users: []
};

data.users = data.users.push(10);
console.log(typeof data.users); // number

  

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

您可以使用.concat代替.push

this.setState({
   users: this.state.users.concat(member)
});

this.setState({
  users: [...this.state.users, member]
});