Я пытался получить значение в AsyncStorage с помощью метода getItem ().
Я создал один навигатор-переключатель.что выглядит следующим образом.
export const AuthNavigator = createSwitchNavigator(
{
AuthLoading: AuthLoadingScreen, // Loading screen
App:DrawerNavigator, //screens with drawer navigator
Auth: AuthStack, // login screen
},
{
initialRouteName: 'AuthLoading',
}
);
Я установил AuthLoading в качестве начального маршрута.Ниже мой код AuthLoadingScreen.
export default class AuthLoadingScreen extends React.Component {
constructor(props) {
super(props);
this._promiseHandling();
}
_promiseHandling = () => {
AsyncStorage.getItem("userToken").then((value) => {
console.log(value);
if(value!=undefined){
this.props.navigation.navigate("App");
}
else{
this.props.navigation.navigate("Auth");
}
})
.catch(res => {
console.log(res);
});
}
// Render any loading content that you like here
render() {
return (
<View style={styles.container}>
<ActivityIndicator />
<StatusBar barStyle="default" />
</View>
);
}
}
Итак, изначально я проверяю значение userToken из AsyncStorage.если он есть, я перехожу в приложение.Если его там нет, я перехожу к экрану входа.
Поведение приложения должно быть таким, как указано выше.
Но когда приложение загружается, оно всегда застревает на AuthLoadingScreen.Я попытался отладить код, в котором я выбираю userToken из asyncstorage, но мне странно, что управление переходит к функции _promiseHandling, но после этого оно не входит в , а затем или catch блок.Я сослался на 5-6 примеров, чтобы прочитать значение из асинхронного хранилища и обработать его обещание.
Я даже попробовал следующий способ, но он у меня не работает. React Native AsyncStorage getItem возвращает обещание, а не значение
async _getStorageValue(){
var value = await AsyncStorage.getItem('ITEM_NAME')
return value
}
В чем может быть причина этого?