Можно ли получить доступ к client
из решателя ApolloClient, а не cache
?
Я пытаюсь написать распознаватель, который очищает localStorage и кэш при нажатии кнопки (по сути, выход из системы), но не знаю, как получить доступ к клиенту.
У меня нет проблем с доступом к кешу, но, несмотря на официальные документы, я получаю cache.resetStore()
- это не ошибка функции в консоли (или cache.clearStore() if I use that function
).
Запуск ApolloClient, React и apollo-link-state, упаковка компонентов в graphql()
HOC с compose.
resolvers.js
Mutation: {
logout: (_, __, { cache }) => {
localStorage.clear();
cache.writeData({
data: {
AuthData: {
__typename: 'AuthData',
token: null,
currentUserId: null,
expirationTime: null
}
}
});
}
}
};
index.js
import ReactDOM from 'react-dom';
import App from './App';
import { BrowserRouter } from 'react-router-dom';
//Apollo
import { ApolloProvider } from 'react-apollo';
import { ApolloClient } from 'apollo-client';
import { ApolloLink } from 'apollo-link';
import { createHttpLink } from 'apollo-link-http';
import { InMemoryCache } from 'apollo-cache-inmemory';
import { withClientState } from 'apollo-link-state';
import { resolvers } from './resolvers';
const cache = new InMemoryCache();
...
...
const initialState = {
AuthData: {
__typename: 'AuthData',
token: localStorage.getItem('token') || null,
currentUserId: localStorage.getItem('currentUserId') || null,
expirationTime: localStorage.getItem('expirationTime') || null
},
ErrorLog: {
__typename: 'ErrorLog',
errors: []
}
};
const stateLink = withClientState({
cache,
defaults: initialState,
resolvers
});
const link = ApolloLink.from([stateLink, httpLink]);
const client = new ApolloClient({
link,
cache
});
Ожидаемый:
- Кэш клиента должен быть очищен от всех данных.
Фактический:
- Получение ошибки
client is not defined
или cache.resetStore()
не является функцией.