En un useEffect de React Native, es aceptable usar una matriz de dependencia vacía (y esto a menudo se hace intencionalmente por razones legítimas).
En useEffect, ¿cuál es la diferencia entre no proporcionar una matriz de dependencia y una vacía?
Sin embargo, Linter sigue quejándose y sugiriendo agregar ciertos parámetros como elementos de la matriz de dependencia o eliminarlos. Eliminar la matriz de dependencias no es una opción para mí. ¿Debería aceptar la sugerencia de Linter y agregar una larga lista de elementos a la matriz de dependencia? ¿O hay una manera fácil de cambiar la configuración de Linter?
AFAIK, no hay configuración para la regla react-hooks/exhaustive-deps , pero puede ignorar la regla de eslint para una línea específica.
Si realmente desea que el efecto se ejecute solo una vez exactamente cuando se monta el componente, entonces es correcto usar una matriz de dependencia vacía. Puede deshabilitar la regla eslint para que esa línea la ignore.
useEffect(() => { ... business logic ... // NOTE: Run effect once on component mount, please // recheck dependencies if effect is updated. // eslint-disable-next-line react-hooks/exhaustive-deps }, []);Nota: si luego actualiza el efecto y necesita ejecutarse después de otras dependencias, este comentario deshabilitado puede potencialmente enmascarar errores futuros, por lo que sugiero dejar un comentario bastante abierto sobre la razón para anular la regla de pelusa establecida.
Por lo general, lo que sugiere linter (agregar las dependencias) es la mejor solución, ya que generalmente querrá volver a ejecutar el efecto cuando cambien algunas de esas variables utilizadas en el efecto. Consulte https://typeofnan.dev/you-probably-shouldnt-ignore-react-hooks-exhaustive-deps-warnings/ para obtener más información. También se ha discutido aquí: https://github.com/facebook/react/issues/14920