反应中 useEffect 中的 setInterval

时间:2021-06-08 14:15:32

标签: reactjs setinterval use-effect use-state react-functional-component

所以我有一个组件,我喜欢每 X 秒提取一次数据,然后使用先前获取的数据检查数据,如果有任何不同,则设置要呈现的数据。我是这样写的:

    const [data,setData] = useState(undefined);

    const getPaneData = () => {
        axios.get(url)
            .then (res => checkAndUpdateState(res.data))
            .catch(() => setData(null))
    }

    const checkAndUpdateState = (fetchedData) => {
        if (!data){
            setData (fetchedData)
        }
        if (!deep_Compare(data,fetchedData)){
            // this is to test if data is the same or not
            setData (fetchedData)
        }
    }


    useEffect(() => {
        const observeChanges = setInterval(() => getPaneData(), 5000)
        return () => clearInterval(observeChanges);
    }, []);

    

我的问题是数据总是未定义的,尽管我可以看到我得到了一些数据并且我正确呈现了,checkAndUpdateState 中的第一个 if 语句总是触发。我在这里做错了什么?

0 个答案:

没有答案