在自定义React钩子中,useEffect在return语句之前触发吗?

问题描述 投票:0回答:1

我创建了一个自定义反应挂钩来使用 useQuery 获取数据。当用户滚动表格时,将加载下一组数据。当使用下一组道具调用自定义反应钩子时,它将返回先前计算的调用结果。

function useCustomHook(props) {
const [data, setData] = useState([]);
const {data, loading, error, refetch} = useQuery(query, variables: {props});

useEffect(() => {
setData(data);
}, [loading, error, data, refetch]);

return {data, setData};
}

我期待它返回新拨打电话的数据。

javascript react-hooks graphql apollo-client
1个回答
0
投票

我知道这不是你所要求的,但这永远不会奏效。

  • 您已声明
    data
    两次,因此此代码将无法运行。
  • useQuery 的目的之一是不使用
    useState
    useEffect
    ,这样你的代码就可以在没有
  • 的情况下正常工作
const [data, setData] = useState([]);
// and
useEffect(() => {
  setData(data);
}, [loading, error, data, refetch]);

无论哪种方式,为了回答你的问题,如果你像我们过去那样使用

useEffect
useState
,则 return 语句总是首先以空值解析,并且当你在
useEffect
中拥有的任何承诺是已解决,更新值。

我希望这有帮助

© www.soinside.com 2019 - 2024. All rights reserved.