
本文将演示如何使用 apolloclient 库为 graphql 请求设置 react 应用程序。目标是展示如何配置应用程序并提供如何发出请求的示例。
将库添加到项目中:
yarn add @apollo/client graphql --dev
下面,我将展示如何配置 apolloclient 来启用 graphql 请求。
首先,将创建 apolloclient 上下文,以便其子级包含的所有内容都可以发出 graphql 请求:
import {
apolloclient,
apolloprovider,
httplink,
inmemorycache
} from '@apollo/client'
function exampleapolloprovider({ children, token, uri }) {
const httplink = new httplink({
uri: uri,
headers: {
authorization: `bearer ${token}`,
},
})
const client = new apolloclient({
cache: new inmemorycache(),
link: httplink,
})
return <apolloprovider client={client}>{children}</apolloprovider>
}
export { exampleapolloprovider as apolloprovider }
在 const 客户端中,apolloclient 被初始化,通过定义的链接指定端点,并使用 inmemorycache 实例指定缓存,apolloclient 使用 inmemorycache 来缓存查询结果。
在 httplink 中,设置了 graphql api 的 uri,以及请求所需的标头。在此示例中,使用了 bearer 令牌。
最后,定义返回和导出以允许其在应用程序内使用。
考虑到这是一个登录后将令牌保存在 localstorage 中的应用程序,并且目标是在整个应用程序中启用 graphql 请求,因此使用上一个文件中定义的 apolloprovider:
import { apolloprovider } from './contexts/apollocontext'
import appcontent from './components/appcontent'
const token = localstorage.getitem('@tokenid')
// endpoint of your graphql api
const graphqluri = 'https://www.example.com'
const app = () => {
return (
<apolloprovider token={token} uri={graphqluri}>
<appcontent />
</apolloprovider>
)
}
在此示例中,从 localstorage 检索令牌(在本例中,就好像它是使用键 @tokenid 保存的),并且 uri 在同一文件中定义,然后传递给 apolloprovider。 appcontent 作为 apolloprovider 的子级传递,这意味着其中包含的所有内容(整个应用程序)将能够发出 graphql 请求。
实际上,当测试和生产环境不同时,graphqluri 可以来自环境变量,并相应地定义每个环境的 uri。
从 api 公开的名为 user 的查询开始,该查询返回用户的姓名和职业,将使用要调用的查询定义一个文件:
import { gql } from '@apollo/client'
const get_user = gql`
query getuser {
user {
name
occupation
}
}
`
export default get_user
get_user 对应于在 react 应用程序中如何调用查询,user 是要从 api 使用的查询的名称。
在定义appcontent的文件中,将调用get_user查询并使用其返回:
import { useQuery } from '@apollo/client';
import GET_USER from './query/UserQuery'
const AppContent = () => {
const { loading, error, data } = useQuery(GET_USER)
if (loading) return <p>Loading...</p>
if (error) return <p>Request failed</p>
return (
<>
<h1>Welcome!</h1>
<p>Name: {data.user.name}</p>
<p>Occupation: {data.user.occupation}</p>
</>
)
}
usequery 钩子将执行 get_user 中定义的查询,在请求仍在进行时返回 load true,如果请求失败则返回错误,并在请求成功完成时返回数据。在数据返回之前,屏幕上会显示“正在加载...”消息。如果请求以错误结束,则会显示消息“请求失败”。如果请求成功,屏幕上会显示用户的姓名和职业(name and jobs)。
这样,apolloclient 就已针对 graphql 请求进行了配置并可供使用。
这个想法是演示如何配置 apolloclient 以允许 react 应用程序进行 graphql 调用,显示上下文的定义、此上下文的用法以及如何执行查询的示例。
这是 apolloclient 文档的链接,供想要深入了解的人使用。
以上就是在 React 中为 graphQL 请求设置 Apollo 客户端的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号