猿问

设置状态方法似乎不执行任何操作。为什么?

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方法中。


慕码人2483693
浏览 67回答 1
1回答

江户川乱折腾

调用状态更改时,组件不会立即更新 - 而是对更改进行批处理,以便一次完成所有排队的更改,然后重新呈现。使用钩子,代码中的变量无论如何都不会收到更新的数据,因为必须再次调用整个组件才能使更新的值存在 - 只有在下次调用组件时,才会为组件分配从 中获取的更新值。roleroleuseState如果要记录数据,假设它开始时为空,则应在主组件正文中执行此操作:const [role, setRole] = useState(null);if (role) {  console.log('Got data', role);}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答