Привет, у меня есть реактивный проект / EXPO, где у меня есть страница входа и asyncstorage, в то время как вы вошли в систему с помощью функции asyncstorage, страница входа будет скрыта, и у вас будет компонент HomeScreen. Но на странице входа, если вы нажмете Войти, тогда я не знаю, как перейти к HomeScreen. Затем я должен закрыть приложение и снова открыть, и функция asyncstorage находится в конструкторе, его загрузка и переход на HomeScreen
constructor(props) {
super(props);
this.state = ({
isLoggedIn: 0,
isLoading: 0
})
this.tryLogin();
}
tryLogin = async () => {
let logged = 0;
if(await AsyncStorage.getItem('isLoggedIn') === '1') {
let email = await AsyncStorage.getItem('email');
let password = await AsyncStorage.getItem('password');
try {
firebase.auth().signInWithEmailAndPassword(email, password).then(this.onLoginSuccess.bind(this))
} catch (error) {
await AsyncStorage.setItem('isLoggedIn', '0');
logged = 0;
}
}
this.setState({
isLoading: 0,
});
}
onLoginSuccess() {
this.setState({
email: '', password: '', error: '', isLoggedIn: 1
})
}
render() {
if (this.state.isLoading) {
// We haven't finished checking for the token yet
return <ActivityIndicator />;
}
return (
<NavigationContainer>
<Stack.Navigator
screenOptions={{
headerShown: false
}}
>
{this.state.isLoggedIn == 0 ? (
// No token found, user isn't signed in
<Stack.Screen
name="SignIn"
component={LoginScreen}
/>
) : (
<Stack.Screen name="Home" component={HomeScreen} />
)}
</Stack.Navigator>
</NavigationContainer>
);
return (
<NavigationContainer>
<Stack.Navigator>
{this.state.isLoggedIn ? (
<>
<Stack.Screen name="Home" component={HomeScreen}/>
<Stack.Screen name="Settings" component={NotificationsScreen}/>
</>
) : (
<Stack.Screen name="SignIn" component={LoginScreen}/>
)}
</Stack.Navigator>
</NavigationContainer>
);
}
}
, но на экране входа в систему:
constructor(props) {
super(props);
this.state = ({
email: '',
password: ''
})
}
signUpUser = (email,password) =>{
try {
if (this.state.password.length < 6){
alert("Please enter at least 6 characters")
return;
}
firebase.auth().createUserWithEmailAndPassword(email,password)
}
catch (error) {
console.log(error.toString())
}
};
loginUser = (email,password) =>{
try{
firebase.auth().signInWithEmailAndPassword(email,password).then(function (user) {
AsyncStorage.setItem('email',email);
AsyncStorage.setItem('password',password);
AsyncStorage.setItem('isLoggedIn','1');
console.log(user);
navigation.emit({
type: 'transitionStart',
data: { blurring: false },
target: HomeScreen,
});
})
}
catch (error) {
console.log(error.toString())
}
};
Когда вы нажимаете кнопку там, я не знаю, как маршрутизировать