您的位置:首页 > 汽车 > 时评 > ApolloClient GraphQL 与 ReactNative

ApolloClient GraphQL 与 ReactNative

2024/7/1 19:22:11 来源:https://blog.csdn.net/xubaimiao/article/details/139985402  浏览:    关键词:ApolloClient GraphQL 与 ReactNative

要在 React Native 应用程序中设置使用 GraphQL 的简单示例,您需要遵循以下步骤:

  1. 设置一个 React Native 项目。
  2. 安装 GraphQL 必要的依赖项。
  3. 创建一个基本的 GraphQL 服务器(或使用公共 GraphQL 端点)。
  4. 从 React Native 应用中的 GraphQL 服务器获取数据。

以下是实现此目标的分步指南:

使用 React Native CLI:

 

安装依赖项

安装 GraphQL 所需的依赖项。其中包括

apollo-clientapollo-cache-inmemoryapollo-link-http, 和react-apollo

npm install @apollo/client graphql
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

我们将使用公共 GraphQL API。在此示例中,我们将使用国家/地区 GraphQL API。

网址:'https://countries.trevorblades.com/'

从 GraphQL 服务器获取数据

现在,让我们设置 Apollo 客户端并从 React Native 应用中的 GraphQL 服务器获取数据。

import React from 'react';
import { ApolloClient, InMemoryCache, ApolloProvider, useQuery, gql } from '@apollo/client';
import { Text, View, FlatList, StyleSheet } from 'react-native';// Initialize Apollo Client
const client = new ApolloClient({uri: 'https://countries.trevorblades.com/',cache: new InMemoryCache()
});// Define the GraphQL query
const GET_COUNTRIES = gql`{countries {codenameemoji}}
`;// Component to display countries
const CountriesList = () => {const { loading, error, data } = useQuery(GET_COUNTRIES);if (loading) return <Text>Loading...</Text>;if (error) return <Text>Error: {error.message}</Text>;return (<FlatListdata={data.countries}keyExtractor={(item) => item.code}renderItem={({ item }) => (<View style={styles.item}><Text>{item.name} {item.emoji}</Text></View>)}/>);
};export default function App() {return (<ApolloProvider client={client}><View style={styles.container}><Text style={styles.title}>Countries</Text><CountriesList /></View></ApolloProvider>);
}const styles = StyleSheet.create({container: {flex: 1,justifyContent: 'center',paddingTop: 50,paddingHorizontal: 20},title: {fontSize: 22,marginBottom: 20,textAlign: 'center'},item: {marginVertical: 10}
});

 

解释

Apollo 客户端设置:我们使用 GraphQL 服务器的 URI 和内存缓存初始化 Apollo 客户端。

GraphQL 查询:我们定义一个 GraphQL 查询来获取国家列表,包括其代码、名称和表情符号。

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
const { loading, error, data } = useQuery(GET_COUNTRIES);

 

  • useQuery:这是 Apollo 客户端提供的一个钩子,用于从 GraphQL 服务器获取数据。调用时useQuery,它会返回一个对象,该对象具有描述查询当前状态的属性。
  • GET_COUNTRIES:这是您正在执行的 GraphQL 查询。它通常使用gqlApollo Client 中的模板文字标签来定义。

解构查询结果

返回的对象useQuery包含几个属性,但最常用的是:

  • loading:一个布尔值,指示查询当前是否正在加载(即请求正在进行中)。
  • error:查询失败时包含错误信息的对象。
  • data:查询成功完成时返回的实际数据。

这种模式可确保您的应用程序能够优雅地处理数据获取过程的不同状态,从而提供良好的用户体验。

CountriesList 组件:我们使用useQueryApollo 的钩子根据查询获取数据GET_COUNTRIES。如果数据正在加载,我们会显示加载文本。如果出现错误,我们会显示错误消息。获取数据后,我们使用FlatList显示国家/地区列表。

App 组件:我们用包装主组件ApolloProvider并将客户端传递给它。在主视图中,我们显示标题和组件CountriesList

这个简单示例演示了如何使用 Apollo Client 将 GraphQL 集成到 React Native 应用程序中。您可以通过添加更多查询、变更和更优雅地处理不同状态来扩展此功能。

谢谢。

留下评论以供进一步询问、讨论和提出想法。

版权声明:

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

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