[英]React Context - useEffect
useEffect 正在监听上下文是否正确?
const {
data,
} = useContext(AuthContext);
async function getProfile() {
try {
setLoading(true);
console.info('getProfile called', data.token);
const response = await getByToken(data.token);
if (response && response.ok) {
setFirstName(response.userData.firstName);
setLastName(response.userData.lastName);
setEmail(response.userData.email);
}
} catch (e) {
console.info('Error', e);
} finally {
setLoading(false);
}
}
useEffect(() => {
if (data.userData) {
getProfile();
}
}, [data.userData]);
这是我发现使用不同于 null 的 userData 调用 getProfile 的方法
是的,它就是这样工作的。 尽管说useEffect
正在监听变量的变化可能是不正确的。 由于满足两个条件, useEffect
内部的回调运行:
重新渲染是因为上下文值发生了变化,内部组件是Context
的消费者(因为它调用了useContext)。 并且由于 useEffect 依赖数组中包含的依赖项也发生了变化,因此运行回调。
带有简单示例的沙盒链接
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.