Digamos que tenemos 3 llamadas useEffect con effect2 que tienen una dependencia en props.abc mientras que effect1, effect3 no tienen dependencia.
effect1 > effect2 > effect3 después del montaje?effect1Clean > effect2Clean > effect3Clean después de desmontar? ¿Alguien puede ayudar a entender con claridad?
Se vuelve muy confuso con respuestas de una sola línea, como que la limpieza se activa de forma asíncrona para permitir que el navegador pinte.
function Comp(props) { useEffect(function effect1(){return function() effect1Clean{}}, []); useEffect(function effect2(){return function() effect2Clean{}}, [props.abc]); useEffect(function effect3(){return function() effect3Clean{}}, []); return (<div>hi</div>); } Mi caso de uso es almacenar una referencia en una nueva CustomWebSocketClass después del montaje, luego suscribirme o cancelar la suscripción a props.abc cuando cambie, y finalmente llamar al método de destrucción de mi referencia después de desmontarla. Pero quiero darme de baja de lats props.abc antes de llamar al método destroy, es decir, el orden de los efectos de limpieza es importante.
He pasado por varias preguntas similares de Stackoverflow y problemas de Github, que se comparten a continuación. Pero o son sutilmente diferentes o demasiado viejos y no son relevantes ahora.