I am trying to call rest api using useEffect but it's keeping on call rest spi unlimited time.
'user' is from createContext.
Below is the code snippet
useEffect(() => {
const fetchData = async () => {
try {
const recievedUser = await Apis.getUser(user);
setProfile(recievedUser.data);
if (recievedUser.data) {
// console.log(imageUrl)
fetchImage();
}
} catch (error) {
console.log(error.response);
}
};
const fetchImage = async () => {
try {
const response = await Apis.getUserImage(user);
setImageUrl(URL.createObjectURL(response.data));
} catch (error) {
console.log(error);
}
};
fetchData();
}, [user, imageUrl]);
I am trying to call rest api using useEffect but it's keeping on call rest spi unlimited time.
'user' is from createContext.
Below is the code snippet
useEffect(() => {
const fetchData = async () => {
try {
const recievedUser = await Apis.getUser(user);
setProfile(recievedUser.data);
if (recievedUser.data) {
// console.log(imageUrl)
fetchImage();
}
} catch (error) {
console.log(error.response);
}
};
const fetchImage = async () => {
try {
const response = await Apis.getUserImage(user);
setImageUrl(URL.createObjectURL(response.data));
} catch (error) {
console.log(error);
}
};
fetchData();
}, [user, imageUrl]);
Remove imageUrl
from the dependency array.
For one thing, the effect doesn't rely on it. More importantly, the effect modifies it:
setImageUrl(URL.createObjectURL(response.data));
Modifying the state triggers the effect. Triggering the effect modifies the state. This is an infinite loop.