¿Cómo logro esta lógica simple en reaccionar si el segundo gancho setState depende de que el primero cambie primero? En este ejemplo, el primer valor de setState no se actualiza lo suficientemente rápido antes de ejecutar el segundo setState. He intentado poner el segundo en un tiempo de espera, así como ponerlo dentro de una función de devolución de llamada del primero. No funcionó. UseEffect podría resolver este problema, pero en este caso en particular necesitaría llamar a useEffect solo en el primero y no cada vez que haya un cambio de estado. Déjame saber lo que piensas.
function blah(arg) { if (condition) { setState(arg) } setState(state + 1) }El estado de React no está destinado a funcionar como una variable. Cuando llama a setState , simplemente le está diciendo al código qué valor se supone que debe usar en la próxima representación del componente. Nunca establecerá el valor inmediatamente.
Si necesita que se comporte como una variable, simplemente use variables y llame a setState una sola vez al final.
function blah(arg) { let aux = state; if (condition) { aux = arg; } setState(aux + 1); }necesitas usar el gancho useEffect:
const [state, setState] = useState(); useEffect(() => { // get executed whenever state is changed }, [state]) function blah(arg) { if (condition) { setState(arg) } }Primero cargue la función
import React, { useState, useEffect } from 'react';Después
const [ListValue, setListValue] = useState([]); useEffect(() => { console.log(ListValue) }, []) function blah(arg) { if (condition) { setListValue(arg) } }