Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

219
Vistas
Por qué no se cambia el estado

Tengo la siguiente función y hay dos alertas. La primera alerta muestra que settingsChangedRoute es true , por lo que después de setSettingsChanged(settingsChangedRoute) ; el valor settingsChanged también debería ser cierto, según tengo entendido. Pero es falso y no entiendo por qué. Por favor, ayuda a arreglarlo, ya que debería ser true .

 const [settingsChanged, setSettingsChanged] = useState(false); //... const load = async () => { if (!!(route?.params)) { const settingsChangedRoute = route.params.settingsChanged; Alert.alert(`settingsChangedRoute === ${settingsChangedRoute}`); setSettingsChanged(settingsChangedRoute); } const savedMode = await AsyncStorage.getItem('mode'); if (!!savedMode) { const savedBlocked = await AsyncStorage.getItem('blocked'); if (savedBlocked) { setBlocked(JSON.parse(savedBlocked)); } setMode(savedMode); const savedTurn = await AsyncStorage.getItem('turn'); setTurn(savedTurn); const savedFieldSize = await AsyncStorage.getItem('fieldSize'); const parcedFieldSize = JSON.parse(savedFieldSize); setFieldSize(parcedFieldSize); const savedDifficulty = await AsyncStorage.getItem('difficulty'); setDifficulty(savedDifficulty); Alert.alert(`settingsChanged === ${settingsChanged}`); if (settingsChanged) { setInitialFieldState(); setSettingsChanged(false); } else { const fieldStateJSON = await AsyncStorage.getItem('fieldState'); if (!!fieldStateJSON) { setFieldState(JSON.parse(fieldStateJSON)); } } } else { setInitialFieldState(); } }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El enlace useState() actualiza los valores de forma asíncrona. Por lo tanto, aunque actualizó settingsChanged a true para cuando la ejecución del código llegó a la segunda alerta, los valores aún no han cambiado. Por lo tanto, se recomienda utilizar useEffect hook.

Consulte este documento: https://reactjs.org/docs/hooks-effect.html

 useEffect(()=>{ // write code that will execute after settingsChanged has been updated },[settingsChanged])

Si solo necesita ejecutar un código solo cuando el valor settingsChanged se actualiza a verdadero, simplemente puede agregar una condición dentro de useEffect

 useEffect(()=>{ if(settingsChanged) { // write code that will execute after settingsChanged has been // updated to true } },[settingsChanged])
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda