const _id = match.params.id;
const response = await api.get("/roleidindex", {
params: {
_id
}
})
console.log (response.data); //correct object
setRole(response.data);
console.log (role); //{}
在我的代码中,我有这段文本,正如注释所示,来自请求的响应很好,但是当我将状态设置为值时,状态与其初始状态相同。顺便说一下,这一切都在useEffect方法中。
调用状态更改时,组件不会立即更新 - 而是对更改进行批处理,以便一次完成所有排队的更改,然后重新呈现。
使用钩子,代码中的role
变量无论如何都不会收到更新的数据,因为必须再次调用整个组件才能存在更新的值 - 只有在组件的下一次调用中,才会为role
分配从useState
获取的更新值。
如果要记录数据,假设数据开始时为空,则应在主组件正文中执行此操作:
const [role, setRole] = useState(null);
if (role) {
console.log('Got data', role);
}