Quantcast
Channel: Active questions tagged react-native+typescript - Stack Overflow
Viewing all articles
Browse latest Browse all 6287

Screen mount twice when i navigate to other screen and quickly re navigate to same screen

$
0
0

i have a problem in navigation lifecycle, wich when i navigate from screen to other the last one dosen't stay focus and quickly re navigate to the previous screen.Please if anyone can help me.

This is my AuthStack.tsx file :

import React, { useState, useEffect, useContext } from 'react'import { createStackNavigator } from "@react-navigation/stack";import { Text, Button } from 'react-native';import { Center } from './Center';import { AuthParamList, AuthNavProps } from "./AuthParamList.ts";import { AuthContext } from "./AuthProvider";import { SplashScreen } from "./splashes/SplashScreen";import {LoginScreen} from './authentificationScreens/LoginScreen'import {RegisterScreen} from './authentificationScreens/RegisterScreen'interface AuthStackProps {}const Stack = createStackNavigator<AuthParamList>();export const AuthStack: React.FC<AuthStackProps> = ({}) => {        return (<Stack.Navigator                 screenOptions={{                    header: () =>  {null}                }}                 initialRouteName="SplashScreen" ><Stack.Screen                         options={{ headerShown: false }}                        name='SplashScreen'                        component={SplashScreen}                    /><Stack.Screen                         name='LoginScreen'                        component={LoginScreen}                    /><Stack.Screen                                           name='RegisterScreen'                        component={RegisterScreen}                    />  </Stack.Navigator>        );}

and this is the Login Screen :

import React, { useState, useContext, useEffect } from 'react'import { View, Text, ScrollView, ImageBackground , Dimensions, StyleSheet, Pressable } from 'react-native';import { Input, ListItem, CheckBox, Button, Switch } from 'react-native-elements';import { LinearGradient } from 'expo-linear-gradient';import { AuthParamList, AuthNavProps } from "../AuthParamList.ts";import { AuthContext } from "../AuthProvider";import Ionicons from 'react-native-vector-icons/Ionicons';import * as Animatable from 'react-native-animatable';import { EventRegister } from "react-native-event-listeners";import BgGigaFit from "../../assets/background.jpg";import GigaFitLogo from '../../assets/GigaFitLogo1.png'interface LoginScreenProps {}export const LoginScreen: React.FC<LoginScreenProps> = ({ navigation, route }: AuthNavProps<"LoginScreen">) => {    const {login} = useContext(AuthContext);    const [darkMode, setDarkMode] = useState(false);    return (<ScrollView       style={{flex: 1, backgroundColor: 'darkgray'}}      showsVerticalScrollIndicator={false}><ImageBackground          source={BgGigaFit}          style={{            height: Dimensions.get('window').height / 2.5,          }}>            {/* <View style={styles.SwitchDarkTheme}><ListItem style={styles.SwitchDarkTheme}><Switch value={false} color="#52c234"/></ListItem></View> */}<View style={styles.brandView}>              {/* <Icon type="FontAwesome" name="home"  style={{color: '#ffffff', fontSize: 100}} /> */}<Ionicons name="md-barbell-outline" size={50} color="#52c234" /><Animatable.Image                 animation="fadeIn"                duration= {4000}                source={GigaFitLogo}                style={styles.logo}                resizeMode="stretch"            /></View></ImageBackground>        {/*Bottom View*/}<View style={styles.bottomView}>            {/*Welcome View */}            {/* <View style={styles.SwitchDarkTheme}><ListItem><Switch value={darkMode} color="#52c234"                      onValueChange= {(val) => {                        setDarkMode(val);                        EventRegister.emit('changeThemeEvent', val)                      }}                  /></ListItem></View> */}<View style={{padding: 40}}><Text style={{color: '#52c234', fontSize: 34}}>Welcome</Text><Text>Don't have an account yet !!!<Text onPress={()=> navigation.navigate('RegisterScreen')} style={{color: '#52c234', fontStyle: 'italic'}}>Register Now</Text></Text>                {/**Form Inputs View */}<View style={{marginTop: 50}}><Input                    placeholder="Email"                    rightIcon={<Ionicons name="md-checkmark-done-sharp" size={20} color="#52c234" />}                    /><Input                    placeholder="Password"                    rightIcon={<Ionicons name="ios-eye" size={20} color="#52c234" />}                    />                    {/**Forgot Password and create new view */}<View style={styles.forgotPasswordView}><View style={{flex: 1, marginTop:-10, marginLeft: -30}}><ListItem noBorder><CheckBox checked={true} checkedColor="#52c234"/><ListItem.Content style={{marginLeft: -35}}><Text style={{color: "#52c234"}}>                                    Remember Me</Text></ListItem.Content></ListItem></View><View style={{flex: 1, marginTop:-3, marginRight: -150}}><ListItem noBorder><ListItem.Content style={{marginLeft: -40}}><Text style={{color: "#52c234"}}>                                    Forgot Password</Text></ListItem.Content></ListItem></View></View>                    {/**Login Button */}<View style={{height: 100, justifyContent: 'center', alignItems: 'center'}}>                                {/* <Button type="Solid" rounded buttonStyle={styles.loginButton}><Text style={{color: "#ffffff"}}>Login</Text></Button> */}<Button                                    icon={<Ionicons name="md-checkmark-circle-outline" size={20} color="#ffffff" />                                    }                                    // title="Login"                                    type="Outline"                                    buttonStyle={styles.loginButton}                                    onPress={() => login()}                                  /></View></View></View></View></ScrollView>    );}

and this is the Register Screen :

import React, { useContext, useEffect } from 'react'import { AuthParamList, AuthNavProps } from "../AuthParamList.ts";import { Center } from './../Center';import { Text, Button } from 'react-native';interface RegisterScreenProps {}export const RegisterScreen: React.FC<RegisterScreenProps> = ({ navigation, route }: AuthNavProps<"RegisterScreen">) => {  //   useEffect(() => {  //     const unsubscribe = navigation.addListener('focus', () => {  //      --------------------------------------  //   });  //   return unsubscribe;  // }, [navigation]);    return (<Center><Text>I am a Register Screen</Text><Button title="go to login" onPress={() => {            navigation.navigate('LoginScreen');            // navigation.goBack()           }} /></Center>    );}

My Problem is when i navigate from the Login Screen to the Register Screen it just show for a moment and re navigate it self quickly to the login Screen .


Viewing all articles
Browse latest Browse all 6287

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>