首页 > 解决方案 > 作为道具传递给子组件的 SWR 数据创建无限获取循环

问题描述

在 SWR 中,一旦我收到获取结果,我想将它作为道具传递给子组件。钩子定义为:

const fetcher = url => axios.get(url).then(res => res.data);

export default function useTeleworkInfoSWR() {

    const { data, error } = useSWR('/teleworkInfo', fetcher);

    return {
        teleworkInfo: data,
        teleworkInfoIsLoading: !error && !data,
        teleworkInfoError: error
    }

}

在 Home 组件中使用如下:

const {teleworkInfo, teleworkInfoIsLoading, teleworkInfoError} = useTeleworkInfoSWR();

...
return (<>
     ...
     <SomeComponent abc={teleworkInfo} />    
</>);

这正在创建某种无限循环,并且 SWR 总是很忙。我是否需要在该子组件中单独调用 SWR 而不是将其作为道具传递?

标签: reactjsswr

解决方案


推荐阅读