@defer
指令,以延迟返回数据。query MyQuery {
myData @defer {
# 查询字段
}
}
useQuery
钩子和await
语句,等待Promise解析。import { useQuery, gql } from "@apollo/client";
async function fetchData() {
const {data} = await client.query({
query: gql`
# 查询
`
});
console.log(data);
}
function MyComponent() {
const {data, loading, error} = useQuery(gql`
# 查询
`);
if (loading) return Loading...
;
if (error) return Error!
;
// 使用data渲染组件
}
apollo-link-promise
来处理Promise。import { fromPromise } from "apollo-link-promise";
import ApolloClient from "apollo-client";
const promiseLink = fromPromise(() => {
const data = fetchData();
return data;
});
const client = new ApolloClient({
cache: new InMemoryCache(),
link: promiseLink,
// 其他配置
});