gpt4 book ai didi

javascript - this.setState 无法传递来自 res.data 的信息

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:39:07 26 4
gpt4 key购买 nike

当我像这样运行我的代码时,控制台显示一个空数组。但是,当我使用 console.log(res.data) 时,我可以毫无问题地获得员工的预期 json 对象。

  state = {
userList: [],
firstName: "",
lastName: "",
position: ""
};

loadUsers = () => {
API.getUsers()
.then(res =>
this.setState({ userList: res.data, firstName: "", lastName: "",
position: "" })
)
.then (console.log(this.state.userList))
.catch(err => console.log(err));
};

无论以何种方式运行代码,我都会收到 Uncaught SyntaxError: Unexpected end of JSON input at JSON.parse () 错误消息。

最佳答案

     .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, firstName: "", lastName: "", position: "" },
() => console.log("done", this.state)
)

关于javascript - this.setState 无法传递来自 res.data 的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55250144/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com