当我像这样运行我的代码时,控制台显示一个空数组.但是,当我使用console.log(res.data)时,我得到了员工的预期json对象没有问题.
state = { userList: [],firstName: "",lastName: "",position: "" }; loadUsers = () => { API.getUsers() .then(res => this.setState({ userList: res.data,position: "" }) ) .then (console.log(this.state.userList)) .catch(err => console.log(err)); };
无论哪种方式运行代码我还得到一个未捕获的SyntaxError:JSON.parse()错误消息的JSON输入的意外结束.
解决方法
.then (console.log(this.state.userList))
这无疑会调用console.log,记录当前状态(异步内容甚至启动之前的方式),console.log返回undefined,整个事情评估为
.then(undefined)
相反,将函数传递给.then,例如
.then(() => { console.log(this.state); });
但是,由于setState也是异步的,因此无法可靠地工作.因此,您应该使用可以传递给setState的回调,以便在完成异步操作并更新状态后进行记录:
this.setState( { userList: res.data,position: "" },() => console.log("done",this.state) )
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。