2 回答
TA贡献1829条经验 获得超13个赞
为了从 API 获取数据,我使用了 axios.all,为了授权 JQL 查询,我需要用户名和密码。在调用 axios.all 之前设置授权字符串 (this.setState{authString}) 并且在每个 get 调用中,我使用 this.state.authString 进行授权。
在事件处理程序中,只有当您退出事件处理程序时,react 才会刷新所有状态更改。
这里我设置了一个例子 https://codesandbox.io/s/runtime-firefly-v59yk
因此,在事件处理程序的执行期间,当您访问this.state.authString它时,它会为您提供进入事件处理程序的初始值。
所以解决这个问题的一种方法是使用的第二个参数setState来确保状态已经更新并且组件已经重新渲染,就像这样
this.setState({
authString: authString,
loading: true
}, () => axios.all(...));
TA贡献1866条经验 获得超5个赞
因为 this.setState 是异步的。所以你可以像这样在 setState 中使用回调:
this.setState({
authString: authString,
loading: true
}, () => {
axios.all(...) // Call axios here to make sure setState done
});
更多信息,请在此处查看文档 setState
添加回答
举报