Estoy tan confundido sobre el comportamiento de useEffect en el siguiente caso:
Fragmento de código :
const verticesCount = selectionProvider.verticesSelectionProvider.count; console.log('RENDER ---> COUNT = ', verticesCount); useEffect(() => { console.log('EFFECT : COUNT UPDATED ---> COUNT = ', verticesCount); return () => console.log('USEEFFECT:CLEANUP'); }, [verticesCount]);la consola :
1: RENDER ---> COUNT = 0 2: EFFECT : COUNT UPDATED ---> COUNT = 0 3: RENDER ---> COUNT = 1 4: USEEFFECT:CLEANUP 5: EFFECT : COUNT UPDATED ---> COUNT = 1 6: RENDER ---> COUNT = 0Sin un mejor ejemplo es difícil decir cuál es el problema.
Supongo que verticesCount no cambió.
Por ejemplo verticesCount fue: 1, cambió a 2, cambió a 1, luego cambió una vez más a 1
Pero debido a que el valor del estado no cambió la última vez, useEffect no se activó. Una posible solución:
const [update, setUpdate] = useState(false);verticesSelectionProvider alternar setUpdate(!update) cada vez que cambian los vérticesuseEffect() escuche la update en lugar de verticesCount