reactjs - 如何解决 Apollo 的“在上下文中找不到“客户端”...”问题?
问题描述
错误信息:
无法在上下文中找到“客户端”或作为选项传入。将根组件包装在 中
<ApolloProvider>
,或通过选项传入 ApolloClient 实例。
有谁知道如何解决这个问题?
useQuery(LINK_QUERY)
正在返回上面的错误。我试过使用 switch useQuery
to <Query> ... </Query>
,但并没有解决问题。我也尝试过重构index.js
文件并使用这里ApolloHooksProvider
提到的。这里提到的解决方案也没有解决问题。
代码块:
import { useQuery } from "@apollo/client";
import LINK_QUERY from "../graphql/queries/GetAllLinks";
function MakeSlug(length) {
let slug = "";
let characters =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
let charactersLength = characters.length;
for (let i = 0; i < length; i++) {
slug += characters.charAt(Math.floor(Math.random() * charactersLength));
}
return CheckSlug(slug);
}
function CheckSlug(slug) {
const { loading, error, data } = useQuery(LINK_QUERY);
if (loading) return "Loading";
if (error) return `Error! ${error.message}`;
return data.allLinks.map((link) => {
if (link.slug === slug) {
return MakeSlug(4);
} else {
return slug;
}
});
}
module.exports = MakeSlug;
完整代码: https ://codesandbox.io/s/gifted-liskov-tkhtm?file=/src/services/MakeSlug.js
谢谢!
解决方案
我重构了代码库并将所有依赖apollo-boost
项更改为.react-apollo
@apollo/client
这需要一点重构。这并不是那么疯狂的变化。
<Query>
改为useQuery
. 并<Mutation>
更改为useMutation
. 就个人而言,我更喜欢编写代码库的<Query>
和<Mutation>
方式,但它似乎是一种更一致的方式来编写代码以使用一个依赖项而不是多个依赖项。
推荐阅读
- asp.net-core - 错误,在使用 EF Core 值转换时必须在字符串中指定解析的有效信息
- php - 两个 MySQL 命令(SELECT to View),但只有一个显示输出
- c# - 发布 C# MultipartFormContent application/octet-stream Winform HttpClient
- python - 如何使字符串成为已经存在的变量?
- algolia - 自动完成算法中的 facetFilters
- mongodb - Golang官方驱动中的MongoDB连接池
- qt - QGraphicsView中如何使用opengl,然后编译成wasm?
- excel - Excel VBA 行在顶部重复,最后一页除外
- java - 是否可以将 IntelliJ 的“分析数据流到此处”功能与 Java Lombok 一起使用?
- typescript - typescript 是否支持 .d.ts 中的扩展语法?