Deduzco que useEffect Hook se ejecuta después de cada procesamiento, si se proporciona con una matriz de dependencia vacía:
useEffect(() => { performSideEffect(); }, []);Pero, ¿cuál es la diferencia entre eso y lo siguiente?
useEffect(() => { performSideEffect(); }); Note la falta de [] al final. El complemento linter no arroja una advertencia.
No es exactamente lo mismo.
Darle una matriz vacía actúa como componentDidMount , solo se ejecuta una vez.
No darle un segundo argumento actúa como componentDidMount y componentDidUpdate , ya que se ejecuta primero en el montaje y luego en cada renderizado.
Dándole una matriz como segundo argumento con cualquier valor dentro, por ejemplo , [variable1] solo ejecutará el código dentro de su gancho useEffect UNA VEZ en el montaje, así como siempre que cambie esa variable en particular (variable1).
Puede leer más sobre el segundo argumento y sobre cómo funcionan realmente los ganchos en los documentos oficiales en https://reactjs.org/docs/hooks-effect.html
Solo una adición a la respuesta @bamtheboozle's .
Si devuelve una función de limpieza de su useEffect
useEffect(() => { performSideEffect(); return cleanUpFunction; }, []); Se ejecutará antes de cada ejecución de código useEffect , para limpiar la ejecución anterior de useEffect. (Excepto la primera ejecución de useEffect)