ApolloClient:在等待下一次获取数据时,如何保留前一个查询的数据?
创始人
2024-09-09 08:30:26
0

一种解决办法是在组件的state中存储上一次请求的数据,并在新请求还没返回前使用它。这可以通过使用Apollo Client的更新缓存机制来实现,具体做法如下:

首先,在组件中定义要缓存的查询以及查询变量:

import React, { useState } from 'react';
import { useQuery } from '@apollo/react-hooks';
import gql from 'graphql-tag';

const GET_USERS = gql`
  query users($search : String!) {
    users(search: $search) {
      id
      name
      email
    }
  }
`;

const Search = () => {
  const [search, setSearch] = useState('');
  const [cacheData, setCacheData] = useState(null);

  const { data, loading } = useQuery(GET_USERS, {
    variables: { search }
  });

  // 若新请求未完成,则返回缓存数据
  if (loading && cacheData) {
    return ;
  }

  // 若新请求完成,则更新缓存数据
  if (data) {
    setCacheData(data.users);
    return 
  }

  return (
    
setSearch(e.target.value)} /> {!loading && data && }
); };

在这个例子中,如果新的查询还没有返回,我们会跨帧使用 cacheData 变量保存上一次的查询数据。在 data 结果可用时,这个变量会被更新。如果有需要,我们可以安排某个更新程序来自动更新Apollo Client缓存,从而使查询数据在其实际存储位置中得到更新:

import { ApolloClient } from 'apollo-client';
import { InMemoryCache } from 'apollo-cache-inmemory';

const client = new ApolloClient({
  cache: new InMemoryCache(),
  ...
});

相关内容

热门资讯

为切实保障!闲玩暗宝辅助软件下... 为切实保障!闲玩暗宝辅助软件下载,火神大厅辅助器,窍要教程(原来是真的有挂的)-哔哩哔哩1、打开软件...
经核实!四川途游破解安装包,八... 经核实!四川途游破解安装包,八闽掌上十八卦脚本,诀窍教程(一贯确实有挂的)-哔哩哔哩1)八闽掌上十八...
据玩家消息!胡乐辅助脚本可卡片... 据玩家消息!胡乐辅助脚本可卡片吗,小闲辅助神器,攻略教程(一直是有挂)-哔哩哔哩运胡乐辅助脚本可卡片...
无独有偶!阿拉斗牌辅助视频,情... 无独有偶!阿拉斗牌辅助视频,情怀游戏字牌辅助,指引教程(一贯是有挂)-哔哩哔哩1、这是跨平台的情怀游...
经调查!水鱼辅助软件下载,丰城... 经调查!水鱼辅助软件下载,丰城呱呱辅助器,法门教程(一贯确实有挂)-哔哩哔哩1、水鱼辅助软件下载透视...
更值得关注的是!来几局免费辅助... 更值得关注的是!来几局免费辅助器,胡乐辅助脚本,步骤教程(一贯确实有挂)-哔哩哔哩1、来几局免费辅助...
更值得关注的是!欢乐达人正版脚... 更值得关注的是!欢乐达人正版脚本,新玄龙辅助,大纲教程(其实真的有挂)-哔哩哔哩进入游戏-大厅左侧-...
随着!广西微乐小程序辅助器,奇... 随着!广西微乐小程序辅助器,奇迹陕西辅助,学习教程(一贯确实有挂的)-哔哩哔哩1、下载好广西微乐小程...
日前!闲来辅助工具,新海贝辅助... 日前!闲来辅助工具,新海贝辅助器,方式教程(其实是有挂的)-哔哩哔哩1、新海贝辅助器透视辅助简单,新...
现场直击!创思维激k有辅助器吗... 现场直击!创思维激k有辅助器吗,八闽福建辅助,积累教程(一直是真的有挂)-哔哩哔哩1、实时创思维激k...