微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – this.setState无法从res.data传递信息

当我像这样运行我的代码时,控制台显示一个空数组.但是,当我使用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 举报,一经查实,本站将立刻删除。

相关推荐