React native Can';t在未安装的组件上执行React状态更新。(React本机错误)
我无法卸载此功能。请帮助,请告诉我如何卸载正在使用的功能 警告:无法执行反应状态 更新未安装的组件。这是一个no-op,但它表示应用程序中存在内存泄漏。要修复此问题,请取消useEffect清理函数中的所有订阅和异步任务React native Can';t在未安装的组件上执行React状态更新。(React本机错误),react-native,React Native,我无法卸载此功能。请帮助,请告诉我如何卸载正在使用的功能 警告:无法执行反应状态 更新未安装的组件。这是一个no-op,但它表示应用程序中存在内存泄漏。要修复此问题,请取消useEffect清理函数中的所有订阅和异步任务 checkLoginState(); },[]); const checkLoginState = () =>{ if(user.length > 0 ){ fetch(`${Config.SE
checkLoginState();
},[]);
const checkLoginState = () =>{
if(user.length > 0 ){
fetch(`${Config.SERVER_KEY}/api/users/profile`, {
method: 'GET',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
'Authorization': `Bearer ${user}`
}
}).then((response) => response.json())
.then((json) => {
console.log(json)
if(json.success === true){
setUserData(json.data)
setData(json)
setUser(true)
setLoading(false)
} else if (json.msg === 'Token has expired'){
refresh();
} else {
console.log(json)
alert('Failed to access data')
navigation.navigate('main')
}
})
.catch((error) => {
console.log(error)
});
} else {
setLoading(false)
}
}```
请包括完整的代码和正确的格式。我看不到
useffect
钩子。在卸载组件后,当您校准setState
时,通常会出现该错误。在您的情况下,组件似乎是在获取
调用仍在进行时卸载的(可能是您导航回来的),当您得到服务器响应时,React尝试调用setUserData(json.data)
,setData(json)
,这将解释您的错误。您可以在然后
块中添加一个检查,并且仅在安装组件时执行该代码,或者您也可以在组件中取消获取
请求将卸载
当组件在获取完成之前卸载时,会发生这种情况。关于如何处理这个问题,有很多答案和文章。本质上,在useEffect中需要一个类似isSubscribed的布尔值,并且如果isSubscribed仍然为真,则只调用useEffect中的setState函数。这是否回答了您的问题?