admin管理员组

文章数量:1314480

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]);

Share Improve this question edited Jan 30 at 13:53 Abhishek Kumar asked Jan 30 at 13:50 Abhishek KumarAbhishek Kumar 91 bronze badge
Add a comment  | 

1 Answer 1

Reset to default 5

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.

本文标签: javascriptusing useEffect keep on calling apiStack Overflow