如何在 useEffect 钩子中停止无限循环

时间:2021-07-23 05:09:48

标签: javascript reactjs api react-hooks frontend

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

我正在研究 react js,我必须在页面渲染后显示用户列表,所以我使用 useeffect 钩子,当我编写 useeffect 钩子时,它会无限次调用 api 如何阻止它。如果我添加空白依赖项 [] 它显示依赖项中缺少 requestoptions

2 个答案:

答案 0 :(得分:2)

将一个空数组作为第二个参数传递给 useEffect Hook。

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

如果将 Effect Hook 的第二个参数留空,则会陷入无限循环,因为 Effect Hook 总是在状态改变后运行。由于 Effect Hook 会触发另一个状态更改,它会一次又一次地运行以增加计数。

答案 1 :(得分:0)

你应该通过 requestOptions 作为第二个参数

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