ApolloClient+NextJS的内存泄漏问题,涉及到InMemoryCache缓存。
创始人
2024-09-09 07:30:18
0

在 Apollo Client 中手动清理缓存。

示例代码:

import { ApolloProvider, ApolloClient, InMemoryCache } from "@apollo/client";
import { useMemo } from "react";
import { useRouter } from "next/router";

let apolloClient;

function createApolloClient() {
  return new ApolloClient({
    ssrMode: typeof window === "undefined",
    uri: "http://localhost:4000/graphql",
    cache: new InMemoryCache(),
  });
}

export function useApollo() {
  const router = useRouter();

  const client = useMemo(() => {
    if (!apolloClient) {
      apolloClient = createApolloClient();
    }

    return apolloClient;
  }, []);

  // 每次路由切换前清空缓存
  router.beforePopState(() => {
    apolloClient.resetStore();
    return true;
  });

  return client;
}

export function WrapWithApollo({ children }) {
  const client = useApollo();

  return {children};
}

在上述示例中,我们使用了 useMemo 来保证仅在客户端第一次访问时才创建 Apollo Client 实例,从而避免内存泄漏的问题。

同时,我们在路由切换前手动清空缓存,以避免缓存过多而导致内存泄漏。

相关内容

热门资讯

第9苹果版!旺旺福建麻将里面有... 第9苹果版!旺旺福建麻将里面有没有猫腻(透视)太坑了其实真的有挂(有挂细节)-哔哩哔哩;旺旺福建麻将...
2软件(WPK存在)外挂透明挂... 2软件(WPK存在)外挂透明挂辅助神器(透视)透明教程(详细教程)-哔哩哔哩,支持语音通讯、好友开房...
4个大厅房!德扑ai助手(真的... 您好,德扑ai助手这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩家在这款...
九个规律!wpk辅助神器(外挂... 九个规律!wpk辅助神器(外挂被实锤)其实真的有挂(有人有挂)-哔哩哔哩;(需添加指定薇136704...
第6下载!来趣广西麻将十三张有... 第6下载!来趣广西麻将十三张有挂的吗(辅助挂)太坑了其实真的有挂(确实有挂)-哔哩哔哩;一、来趣广西...
一个开挂!wpk德州俱乐部机器... 一个开挂!wpk德州俱乐部机器人(微扑克俱乐部)原来真的有挂(有挂透明挂)-哔哩哔哩;玩家必备必赢加...
1个最新版!德扑软件高端(真破... 1个最新版!德扑软件高端(真破解套路)透视辅助(有挂猫腻)-哔哩哔哩;原来确实真的有挂(需添加指定薇...
3插件(aapoker有挂)外... 3插件(aapoker有挂)外挂透明挂辅助机制(透视)高科技教程(真的有挂)-哔哩哔哩;支持多人共享...
第5存在外挂!雀神麻将赢一阵输... 第5存在外挂!雀神麻将赢一阵输一阵(辅助挂)太坑了原来真的有挂(详细教程)-哔哩哔哩1、很好的工具软...
5个私人房!wepoke辅助真... 1、5个私人房!wepoke辅助真的假的(辅助软件)辅助透视(证实有挂)-哔哩哔哩;详细教程。2、w...