GOOGLE ADS

sábado, 16 de abril de 2022

¿Por qué este código está causando que ocurra un bucle infinito?

Aquí está el código para inicializar categoryArray. Quiero ejecutar el useEffectsolo si los categoryArraydatos cambian.

const [categoryArray, setCategoryArray] = useState([]);
useEffect(() => {
axios.get('http://localhost:8080/user/category')
.then(response => {

if (categoryArray!== response.data.category) {

setCategoryArray(response.data.category);
}
})
.catch(err => {
console.log(err);
})
}, [categoryArray])

Traté de aplicar una declaración condicional setCategoryArraysolo si hay algún cambio, pero de alguna manera esa declaración condicional no funciona correctamente y está ocurriendo un bucle infinito.

¿Podría por favor guiarme sobre dónde me estoy equivocando? También hágame saber si se requiere más información.


Solución del problema

El último parámetro de una useEffectmarca sobre qué valor cambia useEffectdebe activarse nuevamente.

Dado que está configurando categoryArraycon el valor de la axiosllamada, pero también configuró useEffectpara que se active cuando esa variable cambie, se activará una y otra vez.

Probablemente pueda eliminarlo [categoryArray]para useEffectque solo se active una vez en el renderizado inicial.

No hay comentarios.:

Publicar un comentario

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...