Apollo Client: сохранить / сбросить настройки по умолчанию при очистке или сбросе хранилища
Я использую apollo-link-state
для локального хранения ошибок, но я получаю следующую ошибку после очистки кэша.
Я установил значение по умолчанию errors
в пустой массив []
в настройках клиента apollo.
Однако после apolloClient.cache.reset()
или же apolloClient.store.reset()
кажется, что я теряю все значения по умолчанию, вызывая эту ошибку:
Есть идеи, как решить эту проблему?
1 ответ
Из документов:
Иногда вам может понадобиться сбросить хранилище в вашем приложении, например, когда пользователь выходит из системы. Если вы вызываете client.resetStore в любом месте вашего приложения, вам нужно будет снова записать свои значения по умолчанию в хранилище. apollo-link-state предоставляет вам функцию writeDefaults. Чтобы зарегистрировать свой обратный вызов в клиент Apollo, вызовите client.onResetStore и передайте writeDefaults.
Так что вы можете сделать что-то вроде:
const cache = new InMemoryCache()
const link = withClientState({ cache, resolvers, defaults })
const client = new ApolloClient({
cache,
link,
})
client.onResetStore(stateLink.writeDefaults)
С Apollo 2.x вы можете просто сделать ниже:
cache.writeData({data : defaultData });
client.onResetStore(() => {
cache.writeData({data : defaultData });
});
Предполагая, что у вас есть данные по умолчанию для кэша, настроенного над этим кодом.