如果添加了功能依赖项,则React useEffect无限地渲染

时间:2020-08-28 11:02:49

标签: react-hooks infinite-loop use-effect functional-dependencies

我正在使用react useEffect挂钩从后端获取数据。 我正在使用两个函数(解构的道具)

  1. createError(如果有任何错误)
  2. setisLoading(在获取数据时加载微调器) 代码是:
useEffect(() => {
    const fetchCourses = async () => {
      setisLoading(true);

      try {
        const response = await fetch(
          `${localurl}api/course/getEnglishCourses`,
          {
            method: "GET",
            headers: {
              "Content-Type": "application/json",
            },
          }
        );

        const responseData = await response.json();
        setLoadCourses(responseData.courses);
        setisLoading(false);
        // console.log(responseData.courses);
      } catch (err) {
        setisLoading(false);
        createError("Something Went Wrong");
      }
    };

    fetchCourses();   }, []);

ESLint提示“ createError”和“ setisLoading”缺少依赖项。

如果我添加这些useEffect无限运行,则setisloading每次都会重新启动useEffect调用。

如何阻止这种情况发生?

1 个答案:

答案 0 :(得分:0)

如果您知道自己在做什么,并且只想取消显示警告,则可以在dep之前添加// eslint-disable-next-line react-hooks/exhaustive-deps以仅在第一次渲染时运行效果。