简体   繁体   中英

How can stop infinite loop in useeffect hook

 const [list, setlist] = useState([]); const token = localStorage.getItem("token"); const requestOptions = { method: "GET", headers: { authorization: `Bearer ${token}` }, }; useEffect(() => { fetch("http://localhost:3000/recruiter/postedjobs",requestOptions) .then((response) => response.json()) .then((data) => { setlist(data.data); }); });

I am working on the react js where i have to show the list of user after the page render so i use the useeffect hook what when i write the useeffect hook it call the api infinite time how can stop this. if i add the blank dependencies [] it show requestoptions are missing from dependencies

Pass an empty array as a second argument to useEffect Hook.

useEffect( ()=>{
      console.log(‘hello’);
   }, [] );

If you would leave the second argument of the Effect Hook empty, you would run into an infinite loop because the Effect Hook always runs after the state has changed. Since the Effect Hook triggers another state change, it will run again and again to increase the count.

You sould pass requestOptions as second argument

const [list, setlist] = useState([]);
      const token = localStorage.getItem("token");
      const requestOptions = {
        method: "GET",
        headers: { authorization: `Bearer ${token}` },
      };
      useEffect(() => {
        fetch("http://localhost:3000/recruiter/postedjobs",requestOptions)
          .then((response) => response.json())
          .then((data) => {
            setlist(data.data);
          }, [requestOptions]);
      });

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM