Fui entrevistado con las siguientes preguntas, obtuve la respuesta explicada por mi entrevistador. Pero después de la entrevista, traté de recrear el problema. Obtuve resultados diferentes
Aquí está el código y la respuesta es para explicar lo que se imprimirá en la consola.
function App() { const [foo, setFoo] = useState('a'); useEffect(() => { setFoo('b'); }, []); useEffect(() => { console.log("effect ", foo); }, [foo]); console.log("render ", foo); return ( <div></div> ); }Lo siguiente es mi entendimiento (y la explicación del entrevistador)
useEffect y los almacenó en la pila primeroAsí que la salida se supone que es
'render a' 'effect a' 'render b' 'effect b'pero cuando ejecuté el código, lo que obtuve es
'render a' 'effect a' 'effect a' 'render b' 'effect b'¿Por qué hay un 'efecto a' adicional?
¿Y hay algún material de lectura sobre el ciclo de vida de los componentes funcionales?