es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La regla exhaustive-deps de useEffect es confusa.

He encontrado algunas preguntas relacionadas con esto en stackoverflow, pero nada que satisfaga un caso de uso que tengo con mucha frecuencia al usar useEffect. Digamos que tengo algún código como este:

const ApiViewer = (props) => {
    const [result, setResult] = useState('')

    useEffect(async () => {
        setResult(await callApi(props.valueThatWillChangeButIOnlyCareAboutItsInitialValue))
    }, [])

    return <div>{result}</div>
} 

La regla exhaustive-deps lanzará un error y me pedirá que ponga props.valueThatWillChangeButIOnlyCareAboutItsInitialValue en el arreglo de dependencias. No quiero hacer esto, ya que solo quiero el valor inicial. Puedo usar esa propiedad en algún otro efecto por separado.

Tampoco puedo pensar en otra forma de escribir esto.

También tengo el problema que otras personas parecen tener, es decir, usar funciones/etc que sé que nunca cambiarán. No quiero añadirlas a este arreglo, parece muy tonto.

Dan Abramov dijo que generalmente deshabilitarlo es un error y te afectará significativamente más adelante. He estado usándolo de esta manera durante años y hasta ahora no he tenido problemas hasta que esta regla comenzó a aparecer en un nuevo proyecto.

¿Estoy usando React completamente mal?

Edit: He leído detenidamente este hilo y he concluido que a Dan Abramov realmente le importa los programadores porque quiere que tengan un trabajo de por vida. Estoy eliminando esta regla de mis proyectos ahora.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El póster está enfrentando problemas con la regla exhaustive-deps en useEffect. Solo quieren usar el valor inicial de una prop pero agregarlo al arreglo de dependencias causa que la regla arroje un error. Además, no desean agregar funciones/etc. que nunca cambien al arreglo ya que parece innecesario. Dan Abramov aconseja no desactivar esta regla ya que podría causar problemas más adelante. Sin embargo, el póster ha estado usándola de esta manera durante años sin problemas hasta que esta regla comenzó a aparecer en un nuevo proyecto. En última instancia, el póster ha decidido eliminar esta regla de sus proyectos.

Comments are closed.