Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

420
Views
¿Cuál es el efecto si un useEffect escucha un valor que no es de estado, de tener un valor que no es de estado en la matriz de dependencias?

Cada vez que Comp vuelve a renderizar, rand tendrá un valor diferente. ¿Activará el useEffect ?

 function Comp({}) { const rand = Math.random(); useEffect(() => { // do stuff }, [rand]) }
about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Tener una variable en la matriz de dependencias no está vinculado al hecho de que es un conjunto de state con algún setState . Siempre que esté en la matriz y cambie, la devolución de llamada de useEffect se vuelve a llamar. Ahora, ¿cómo nota useEffect ese cambio? Bueno, hace una diferencia cada vez que el componente se vuelve a renderizar. Dentro de un componente , solo un conjunto de state con setState puede volver a representar ese componente.

Si ya entendió el mecanismo, puede detenerse aquí y construir su increíble producto con React :). De lo contrario, sigue leyendo. Hice un ejemplo para explicar más.

Digamos que tenemos el siguiente componente. Deberíamos tener Hello Word registrado en la consola cuando el componente se renderiza por primera vez, y cada vez que cambia rand . Al hacer clic en ese button , cambia rand , pero no tendremos un nuevo registro, porque no hay una nueva representación ya que ningún state ha cambiado, por lo que useEffect no hizo una diferencia, por lo que no está al tanto del cambio.

 export default function Comp() { let rand = Math.random(); useEffect(() => { console.log("Hello Word"); }, [rand]); return ( <button onClick={() => { rand = Math.random() }}> New value </button> ); }

Tomemos este mismo componente y cambiémoslo un poco, como se muestra a continuación. Ahora, cada vez que hace clic en el botón, el componente se vuelve a renderizar, porque estamos configurando un state con setState , y mientras se vuelve a renderizar si el valor de rand cambia con respecto al anterior, obtendremos un nuevo registro.

 export default function Comp() { const [state, setState] = useState(true); // new line added let rand = Math.random(); useEffect(() => { console.log("Hello Word"); }, [rand]); // notice that the click handler has changed return ( <button onClick={() => setState(!state)}> New value </button> ); }
about 4 years ago · Juan Pablo Isaza Report

0

Cada vez que se vuelva a renderizar el componente, se evaluará el método Math.random , por lo que hará que useEffect se ejecute de nuevo (con la excepción de que rand ha cambiado).

En cambio, si será solo una constante, no volverá a ejecutar useEffect .

about 4 years ago · Juan Pablo Isaza Report

0

si console.log("hola") dentro de useEffect, verá que solo verá dos consolas que muestran "hola" (debido a componenteWillMount y componenteDidMount). Esto significa que su componente solo se volverá a representar si el valor de una variable de estado ha cambiado o si se modifican los accesorios que se le han pasado (por supuesto, los accesorios pasados tienen que ser un estado o, de lo contrario, no se volverá a representar).

Conclusión: solo el cambio en el valor del estado o los accesorios en un componente vuelve a generar el componente.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!