我有以下组件:
import React, { useState, useEffect } from "react";
const App = () => {
    const [data, setData] = useState<null | any[]>(null);
    const [checked, setChecked] = useState(false);
    const [loading, setLoading] = useState(false);
    useEffect(() => {
        setLoading(true);
        (async () => {
            if (data) {
                // Could do something else here if data already exsisted
                console.log("Data exists already");
            }
            const ret = await fetch("https://jsonplaceholder.typicode.com/users?delay=1000", { cache: "no-store" });
            const json = await ret.json();
            setData(json);
            setLoading(false);
        })();
    }, [checked]);
    return (
        <>
            <h1>useEffect Testing {loading && " ⌛"}</h1>
            <hr />
            <input type="checkbox" checked={checked} onChange={(e) => setChecked(e.target.checked)} />
            <pre style={{ fontSize: "0.8em" }}>{JSON.stringify(data)}</pre>
        </>
    );
};
export default App;
目前,我if(data)是毫无意义的,但是如果我想检查当前data状态,然后根据状态运行异步函数,eslint(react-hooks/exhaustive-deps)告诉我钩子缺少data依赖项,它就是。当我将数据添加到导致无限循环的依赖项列表时,问题就出现了。
知道如何解决这个问题吗?感觉它应该是相当简单的模式,但是我发现的所有内容都建议使用扩展setState(prev => prev + 1)重载,在这种情况下对我没有帮助。