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