Я работаю над кодовой базой с Next.js
версии 9.3.0 и GraphQL
. Чтобы воспользоваться преимуществами оптимизации Next. js, мы оборачиваем каждую страницу в withApollo
, поэтому внутри страниц мы можем использовать useQuery
, useMutation
. Проблема, с которой я столкнулся, заключается в том, что мне нужно использовать мутацию в Header component
, который находится за пределами страницы, у которого нет доступа к ApolloClient
, потому что приложение не упаковано в withApollo
.
Я получаю следующую ошибку: Could not find "client" in the context or passed in as an option. Wrap the root component in an <ApolloProvider>, or pass an ApolloClient instance in via options.
Компонент Header
находится внутри компонента Layout
следующим образом:
<>
<Meta />
<Header/>
{children} // pages which are composed with withApollo
<Footer />
</>
Вместо использования useQuery
в компонент без withApollo
легко использовать
import { createApolloFetch } from 'apollo-fetch';
const fetch = createApolloFetch({
uri: process.env.GRAPHQL_SERVER,
});
const userInfoQuery = `{
userInfo {
loggedIn
basketCount
wishListCount
}
}`;
const userInfoData = fetch({
query: userInfoQuery,
});
Есть ли альтернативное решение для useMutation
в компоненте, не составленном с withApollo
?
Любые предложения приветствуются, Ура