我是新手,反应原生,敬请谅解。当我点击类别(A)我导航到包含不同的子类别(B)的新屏幕我在这个页面上使用get令牌(B)和发送请求来获取我可以成功获取显示子类别。当我从那里回到屏幕A并再次点击类别时,这是一个错误验证在api调用中失败,令牌丢失,如果我在几分钟内这样做,它工作得很好,就在我立即做令牌丢失时
useEffect(()=>{
(async()=>{
const token=await getToken()
setUserLToken(token)
})()
}
)
您可以将令牌保存在常量文件中,并且无论何时调用API都可以从该文件中获取令牌。所以它永远不会给你标记缺失文件错误。
Asyncstorage需要一些时间来获取值,这就是为什么你得到令牌丢失问题。
创建一个类似AppManager.js的文件,并在该文件中创建程序,如下所示:
export var ConstantId =
{
accessToken: '',
};
现在,无论何时在Asyncstorage中设置令牌,也要将令牌保存在appmanager文件中,如下所示:
import {ConstantId} from './AppManager';
ConstantId.accessToken = token;
现在,每当需要令牌时,只需从appmanager文件中获取它,如下所示:
import {ConstantId} from './AppManager';
const token = ConstantId.accessToken ;
还有一件事,每次启动应用程序时,只需检查令牌是否存储在Ascynstorage中,如果令牌存在,则仅从app .js文件中获取令牌并将其存储在AppManager.js文件中,如下面
useEffect(() => {
let token = await AsyncStorage.getItem('token');
if (token != null) {
ConstantId.token = token;
}
})