React native 如何在react native中退出应用程序时清除全局变量

React native 如何在react native中退出应用程序时清除全局变量,react-native,react-native-android,react-navigation,React Native,React Native Android,React Navigation,我有一个全局变量,如下所示: let user=null; 让loadedScreens={}; /** *返回用户信息以及此屏幕获取用户信息的次数 *@param{string}屏幕名称 *@回报承诺 */ 导出函数getUser(屏幕名称){ 返回Promis.resolve(用户)。然后(_usr=>{ 如果(!\u usr){ 返回ajax.get(“获取用户api”);//承诺 }否则{ 返回usr; } })。然后(_usr=>{ //这里,我有用户信息。 用户=_usr; //记录

我有一个全局变量,如下所示:

let user=null;
让loadedScreens={};
/**
*返回用户信息以及此屏幕获取用户信息的次数
*@param{string}屏幕名称
*@回报承诺
*/
导出函数getUser(屏幕名称){
返回Promis.resolve(用户)。然后(_usr=>{
如果(!\u usr){
返回ajax.get(“获取用户api”);//承诺
}否则{
返回usr;
}
})。然后(_usr=>{
//这里,我有用户信息。
用户=_usr;
//记录屏幕加载用户计数。
loadedScreens[screenName]=(loadedScreens[screenName]| | 0)+1;
返回{
loadCount:loadedScreens[屏幕名称],
用户
};
});
}
HomeScreen.js中

从“/usersService”导入{getUser};
从“react navigation”导入{NavigationEvents};
导出默认类主屏幕扩展组件{
屏幕焦点(e){
getUser(this.props.navigation.state.routeName)。然后({user,loadCount})=>{
this.setState({user});
如果(loadCount==1){//,则问题出现在此行中
//这里,为了防止用户在每次输入主页时加载页面数据,
//仅当第一次读取用户信息时才执行加载。
get(“获取当前用户任务列表API”)。然后(任务=>{
this.setState({tasks});
})
}
})
}
render(){
返回(
这个。屏幕焦点(e)}/>
{/*其他组件*/}
)
}
}
这似乎没有任何问题

但在Android中,我点击
硬件[返回]
按钮退出应用程序。当我再次打开应用程序时,
getUser
返回的
loadCount
1
,并且
状态。任务
状态。
主屏幕
中的用户
都是
未定义的
主屏幕
已被重新安装),当我读取用户信息后,无法再次加载任务信息

为什么全局变量
loadedScreens
在应用程序退出时不被回收,导致在我再次打开应用程序时该变量仍然存在?当应用程序退出时,如何重置加载屏幕

PS:如果我在退出应用程序后打开Android应用程序列表并完全退出应用程序,则不存在此类问题


您好,您可以使用
componentWillUnmount
执行清理操作。你必须用这个钩子重置/清除你的变量,@KishanGujarati,谢谢你的帮助!我以前感到头晕,因为我不想清理每个屏幕的数据。现在,我已经在应用程序组件的构造函数中初始化了这些全局变量,这些变量已经解决了,谢谢大家