Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

244
Visualizações
¿Cómo puedo actualizar mi estado antes de renderizar el método de renderizado?

Simplemente quiero que mi código de método de renderizado se ejecute después del estado de actualización en useEffect .

Guardo mi token en asyncStorage y ahora quiero que, si existe el token, se redirija a la página de homePage de lo contrario, regrese a la página de inicio de loginPage . Pero el problema es que el método de renderizado se ejecuta antes de actualizar mi estado en useEffect . Y me mantiene en la página de inicio de loginPage incluso si tenía token.

Mi código está a continuación:

 import React, { useEffect, useState } from 'react'; import { createStackNavigator } from '@react-navigation/stack'; import { NavigationContainer } from '@react-navigation/native'; import { StyleSheet, Text, View} from 'react-native'; import AsyncStorage from '@react-native-async-storage/async-storage'; import { useLinkProps, useNavigation, CommonActions } from '@react-navigation/native'; import MainScreen from './src/screens/MainScreen'; import SignIn from './src/screens/SignIn'; const Stack = createStackNavigator(); const App = props => { const [isSigned, setIsSigned] = useState(false); useEffect(async () => { let token = await AsyncStorage.getItem("@token"); console.log("token", token); if (token) { setIsSigned(true); props.navigation.navigate('MainScreen'); } else { setIsSigned(false); props.navigation.navigate('SignIn'); } }, []) return ( <NavigationContainer> <Stack.Navigator initialRouteName={isSigned ? "MainScreen" : "SignIn"} screenOptions={{ headerShown: false }} > <Stack.Screen name="Login" component={SignIn} /> <Stack.Screen name="MainScreen" component={MainScreen} /> </Stack.Navigator> </NavigationContainer> ); }; const styles = StyleSheet.create({ container: { marginTop: Platform.OS === 'android' ? '3%' : '10%' } }); export default App;
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Puede agregar otro valor de estado para representar condicionalmente su marcado:

 import React, { useEffect, useState } from 'react'; import { createStackNavigator } from '@react-navigation/stack'; import { NavigationContainer } from '@react-navigation/native'; import { StyleSheet, Text, View} from 'react-native'; import AsyncStorage from '@react-native-async-storage/async-storage'; import { useLinkProps, useNavigation, CommonActions } from '@react-navigation/native'; import MainScreen from './src/screens/MainScreen'; import SignIn from './src/screens/SignIn'; const Stack = createStackNavigator(); const App = props => { // Manage state whether component has been loaded. const [isLoaded, setIsLoaded] = useState(false); const [isSigned, setIsSigned] = useState(false); useEffect(() => { let token = await AsyncStorage.getItem("@token"); if (token) { setIsSigned(true); props.navigation.navigate('MainScreen'); } else { setIsSigned(false); props.navigation.navigate('SignIn'); } // Tell your component it's been loaded. setIsLoaded(true); }, []); // Don't render if not loaded. if (!isLoaded) return <></>; return ( <NavigationContainer> <Stack.Navigator initialRouteName={isSigned ? "MainScreen" : "SignIn"} screenOptions={{ headerShown: false }} > <Stack.Screen name="Login" component={SignIn} /> <Stack.Screen name="MainScreen" component={MainScreen} /> </Stack.Navigator> </NavigationContainer> ); }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda