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
。
如何保护第一个电话?
答案 0 :(得分:0)
useLazyQuery
是解决此问题的最佳方法。
import {useLazyQuery} from '@apollo/react-hooks';
...
const [getLastViewData, { called, loading, data }] = useLazyQuery(
GET_LAST_VIEW_DATA,
{ variables: { id: lastViewId } }
);
...
您可以随时致电getLastViewData
。