У меня проблема с Apollo Client State в моем приложении React.Я создаю свою ссылку на состояние клиента следующим образом:
const stateLink = withClientState({
cache,
defaults: {
simulation: {
__typename: 'Simulation',
configurationName: null,
job: null,
status: null,
uuid: null,
},
pageTitle: null,
},
resolvers: {},
});
В какой-то момент я должен очистить кэш в приложении (после выхода из системы), который также очищает состояние моего клиента.Я очищаю кеш следующим образом:
client.resetStore()
Где клиент получен с помощью withApollo HOC.После этого я пытаюсь воссоздать свое локальное состояние с помощью следующих вызовов:
client.writeData({
data: {
pageTitle: 'test',
},
});
client.writeData({
data: {
simulation: {
__typename: 'Simulation',
configurationName: null,
job: null,
status: null,
uuid: null,
},
},
});
Но это не работает - в кеше хранится только pageTitle, что приводит к сбою во всех связанных с имитацией состояниях клиента состояниях.запросов.
Кэширование перед очисткой:
{
"data": {
"$ROOT_QUERY.simulation": {
"__typename": "Simulation",
"configurationName": null,
"job": null,
"status": null,
"uuid": null
},
"ROOT_QUERY": {
"simulation": {
"type": "id",
"generated": true,
"id": "$ROOT_QUERY.simulation",
"typename": "Simulation"
},
"pageTitle": null
}
}
}
Кеширование после очистки и восстановления локального состояния:
{
"data": {
"ROOT_QUERY": {
"pageTitle": null
}
}
}
Вместо вторых writeData Я также попытался написать запрос:
const SIMULATION_LOCAL_DATA_QUERY = gql`
{
simulation @client {
configurationName
job
status
uuid
}
}
`;
client.writeQuery({
query: SIMULATION_LOCAL_DATA_QUERY,
data: {
simulation: {
__typename: 'Simulation',
configurationName: null,
job: null,
status: null,
uuid: null,
},
},
});
Но это тоже не сработало.Может ли кто-нибудь сказать мне, что я делаю не так?Спасибо!