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 });
});

Предполагая, что у вас есть данные по умолчанию для кэша, настроенного над этим кодом.

Другие вопросы по тегам