Apollo Client: сохранить / сбросить настройки по умолчанию при очистке или сбросе хранилища - PullRequest
0 голосов
/ 14 ноября 2018

Я использую apollo-link-state для локального хранения ошибок, но я получаю следующую ошибку после очистки кэша.

Я установил значение по умолчанию errors для пустого массива [] вПараметры конфигурации клиента apollo.

Однако после apolloClient.cache.reset() или apolloClient.store.reset() кажется, что я теряю все значения по умолчанию, вызывая эту ошибку:

Error

Есть идеи, как решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 06 августа 2019

С Apollo 2.x вы можете просто сделать следующее:

cache.writeData({data : defaultData });

client.onResetStore(() => {
  cache.writeData({data : defaultData });
});

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

0 голосов
/ 14 ноября 2018

Из документов :

Иногда вам может понадобиться сбросить хранилище в вашем приложении, например, когда пользователь выходит из системы.Если вы вызываете 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)
...