如何保护useQuery中的首次呼叫

时间:2019-08-23 00:16:43

标签: ruby-on-rails reactjs graphql

const [lastViewId, setLastViewId] = useState<string>("");

const { data, loading, error } = useQuery(
  GET_USER, 
  variables: { id: user_id }
);

const lastViewData = useQuery(
  GET_LAST_VIEW_DATA, 
  variables: { id: lastViewId }
);

useEffect(() => {
  if (loading || !data) return;

  if (data && data.user && data.user.lastViewId) {
    setLastViewId(data.user.lastViewId)
  }
}, [loading]);

如您所见,在设置GET_LAST_VIEW_DATA之前,没有lastViewId的情况下调用lastViewId

但是我想在设置lastViewId之后调用GET_LAST_VIEW_DATA

如何保护第一个电话?

1 个答案:

答案 0 :(得分:0)

useLazyQuery是解决此问题的最佳方法。

import {useLazyQuery} from '@apollo/react-hooks';
...
const [getLastViewData, { called, loading, data }] = useLazyQuery(
  GET_LAST_VIEW_DATA,
  { variables: { id: lastViewId } }
);
...

您可以随时致电getLastViewData