Apollo Clientでキャッシュをクリアする

ReactNativeでApollo Clientを使って開発していた。

ログアウト -> 別垢でログインというフローがあった時に前のアカウントで取得したキャッシュが残ってしまっており、適切でないデータを表示していた。なのでログアウト時にはキャッシュをクリアしたかった。

解決法

client.clearStore()を使う。

https://www.apollographql.com/docs/react/caching/advanced-topics/#resetting-the-cache

自分の場合はグローバルステートの loggedIn でログインを管理していたのでこんな感じにした。

useEffect(() => {
    (async function () {
      if (checkedLogin && !loggedIn) {
        await client.clearStore();
        console.log("🧹 clear cache");
      }
    })();
  }, [checkedLogin, loggedIn]);