#react-native #vue.js #vue-native
#react-native #vue.js #vue-native
Вопрос:
Я хочу выполнить что-то эквивалентное этому:
export default class LoadingScreen extends React.Component {
componentDidMount() {
firebase.auth().onAuthStateChanged(user => {
this.props.navigation.navigate(user ? 'App' : 'Auth');
});
}
render() {
return (
<View style={styles.container}>
<Text>Loading</Text>
<ActivityIndicator size='large'></ActivityIndicator>
</View>
);
}
}
Я настроил свои маршруты так, чтобы они проходили через загрузку, чтобы проверить состояние авторизации пользователя, прежде чем перейти к либо Auth
или App
. Когда я добавляю mounted()
, загружаемый текст и индикатор активности не отображаются.
<template>
<view class="container">
<nb-text>Loading</nb-text>
<activity-indicator size="large" color="#0000ff" />
</view>
</template>
<script>
import firebase from "firebase";
import Fire from "./../../api/firebaseAPI";
export default {
// Declare `navigation` as a prop
props: {
navigation: {
type: Object,
},
},
async mounted() {
await firebase.auth().onAuthStateChanged(function (user) {
this.navigation.navigate(user ? "App" : "Auth");
});
},
};
</script>
Когда я запускаю этот код выше, я получаю белый экран.
Ответ №1:
Может быть, нам следует переместить код в смонтированный метод.
<script>
mounted(){
this.checkAuth()
},
...
methods:{
async checkAuth(){
await firebase.auth().onAuthStateChanged(function (user) {
if(user){
this.navigation.navigate("Auth")
}else{
this.navigation.navigate("App")
}
});
}
}
</script>
Комментарии:
1. Мне удалось сделать это через несколько дней после того, как я задал вопрос, но спасибо за ответ.