我使用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不是函数
知道造成这种情况的原因是什么?我在想,当我使用单行解决方案时,错误的对象被传递到状态?
谢谢!
答案 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]
});