当前位置: 首页> 教育> 锐评 > Apollo学习-useQuery学习

Apollo学习-useQuery学习

时间:2025/7/12 20:47:33来源:https://blog.csdn.net/weixin_51621120/article/details/140165089 浏览次数:0次

一、useQuery勾子

useQuery是一个 React hook,它允许你在 React 组件中轻松地获取和使用 GraphQL 查询的数据。

二、useQuery勾子的用法

1、引入useQuery
//从@apollo/client包中引入useQuery勾子
import { useQuery } from '@apollo/client';
2、定义GraphQL查询

使用 GraphQL 语言编写你的查询。你可以将其定义为一个字符串常量,或者使用 gql 模板标签。

const GET_USERS = gql`query getUsers {users {idname}}
`;
3、使用useQuery

在组件中调用 useQuery,传入你的查询。useQuery 会返回一个包含查询状态的对象。

const { loading, error, data } = useQuery(GET_USERS);
4、useQuery的可选参数

useQuery 还接受一些可选参数,如 variablesfetchPolicy 等,以控制查询的行为。

useQuery(GET_USERS, {variables: { limit: 10 },fetchPolicy: 'cache-and-network',
});

三、具体使用

1、创建Apollo客户端
//在应用程序中创建Apollo客户端,并导出默认值。
// 运行前请先启动GraphQL服务,并确保服务地址正确。
import { ApolloClient } from 'apollo-client';
import { HttpLink } from 'apollo-link-http';
import { InMemoryCache } from 'apollo-cache-inmemory';
import { gql } from 'apollo-boost';// HTTP连接
const link = new HttpLink({uri: 'http://localhost:4000/graphql',
});
//内存缓存
const cache = new InMemoryCache();
// Apollo客户端
const client = new ApolloClient({link: link,// 传入缓存cache: cache,
});// 导出默认值
export default client;
2、创建查询
const query = gql`{// 这里可以写查询语句}
`;
3、定义查询方法
// 定义查询方法
const useQuery = () => {const { loading, error, data } = client.query({query: query,});return { loading, error, data };
};

四、

useQuery hook可以说是执行GraphQL查询的最方便的方法

它在函数组件的开头(想其他钩子一样)被调用,并作为第一个必须的参数接收——用gql解析查询

当您使用组件时具有应立即执行的查询时最好使用它,例如用户希望在页面加载时立即查看的数据列表

useQuery返回一个对象,我们可以从中轻松地结构所需的值。执行查询后,需要在其中获取数据的每个组件中使用三个主要值。他们是loading , error , 和data

const GET_POSTS = gql`query GetPosts($limit: Int) {posts(limit: $limit) {idbodytitlecreatedAt}}
`;function App() {const { loading, error, data } = useQuery(GET_POSTS, {variables: { limit: 5 },});if (loading) return <div>Loading...</div>;if (error) return <div>Error!</div>;return data.posts.map((post) => <Post key={post.id} post={post} />);
}

在显示正在获取的数据之前,我们需要在加载时进行处理(当loading设置为true时),并且我们尝试获取数据

届时,我们将显示一个带有文本“Loading”的div或一个加载中的图标。我们还需要处理在获取查询时出错的可能性,例如是否存在网络错误或编写查询时出错(语法错误)

一旦完成加载并且没有错误,我们就可以在组件中使用我们的数据,通常将其显示给我们的用户(如上例所示)

我们还可以从useQuery返回的对象中解构出其他值,但是实际上在执行useQuery每个组件中都需要loading , error , 和data。您可以在此处看到我们可以从useQuery中获取的所有数据的完整列表。

关键字:Apollo学习-useQuery学习

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: