Mire el archivo App.js para una aplicación de reacción creada a través de create-react-app
import { useState, useEffect } from "react"; function App() { const [pState, setPState] = useState(false); useEffect(() => { console.log('Use effect parent. ' + pState); return () => { console.log('Parent cleanup function called. Current State: ' + pState); } }, [pState]); const pChangeHandler = () => { setPState(prevP => { return !prevP; }) } console.log('Parent component rendered. ' + pState); return ( <div className="App"> <button onClick={pChangeHandler}>Change P State</button> </div> ); } export default App; Después de hacer clic en el botón 1 vez, la siguiente es la salida de mi consola (las primeras 2 consolas son antes de hacer clic en el botón) 
Cuando se hace clic en el botón, obtengo el 'componente principal representado' con pState como verdadero. Así que esperaba que fuera cierto (como se llama después de que ocurre el renderizado y pState mientras el renderizado es verdadero) en la 'Función de limpieza principal...' llamada log también. El registro 'Usar efecto padre' también tiene pState verdadero.
¿Podría alguien explicar este comportamiento?
De los documentos:
React limpia el efecto del renderizado anterior antes de ejecutar el siguiente renderizado.
El valor false que se registra proviene de la limpieza useEffect del procesamiento anterior (cuando pState era falso).