Apollo React 的 subscribeToMore 不会更新数据。
创始人
2024-09-09 04:30:49
0

在 Apollo React 中,subscribeToMore 方法用于订阅新的数据更新。如果你发现 subscribeToMore 不会更新数据,可能是由于以下原因之一:

  1. 缺少 updateQuery 函数:subscribeToMore 需要提供一个 updateQuery 函数,以便在接收到新数据时更新缓存。这个函数将接收先前查询的结果和订阅到的新数据,然后返回一个更新后的查询结果。确保在你的代码中提供了 updateQuery 函数。

  2. 缓存问题:Apollo 使用缓存来存储查询结果,以便在需要时快速检索。如果你的数据更新没有在缓存中更新,subscribeToMore 也就无法获取到最新的数据。确保你的查询结果在缓存中正确更新。

下面是一个示例代码,演示如何使用 subscribeToMore 来更新数据:

import { useQuery } from '@apollo/client';
import { gql } from 'apollo-boost';

const GET_MESSAGES = gql`
  query GetMessages {
    messages {
      id
      content
    }
  }
`;

const SUBSCRIBE_TO_MESSAGES = gql`
  subscription SubscribeToMessages {
    newMessage {
      id
      content
    }
  }
`;

const Messages = () => {
  const { loading, error, data, subscribeToMore } = useQuery(GET_MESSAGES);

  useEffect(() => {
    subscribeToMore({
      document: SUBSCRIBE_TO_MESSAGES,
      updateQuery: (prev, { subscriptionData }) => {
        if (!subscriptionData.data) return prev;
        const newMessage = subscriptionData.data.newMessage;
        return Object.assign({}, prev, {
          messages: [...prev.messages, newMessage],
        });
      },
    });
  }, [subscribeToMore]);

  if (loading) return 

Loading...

; if (error) return

Error :(

; return (
{data.messages.map((message) => (

{message.content}

))}
); }; export default Messages;

在上述示例中,subscribeToMore 方法在组件挂载后被调用,用于订阅 newMessage 订阅源的更新。在 updateQuery 函数中,我们将新的消息添加到先前的查询结果中,并返回一个新的查询结果。这样,每当有新消息时,Apollo 将自动更新组件中的数据。

相关内容

热门资讯

一分钟揭秘!潮友会鱼虾蟹有没有... 一分钟揭秘!潮友会鱼虾蟹有没有挂辅助,柳州天天爱字牌辅助器,详细器(有挂教程)1、实时潮友会鱼虾蟹有...
发现玩家!朋朋政和辅助,闲逸辅... 发现玩家!朋朋政和辅助,闲逸辅助器下载,详细app(有挂秘笈)1、玩家可以在闲逸辅助器下载线上大神俱...
玩家爆料!四川长牌皮皮游戏挂,... 玩家爆料!四川长牌皮皮游戏挂,微信牵手跑辅助,详细方法(真是有挂)该软件可以轻松地帮助玩家将四川长牌...
研究成果!牵手跑得软件,大咖娱... 研究成果!牵手跑得软件,大咖娱乐挂脚本,详细教程(有挂方法)一、大咖娱乐挂脚本游戏安装教程牌型概率发...
必知教程!微友圈app辅助工具... 必知教程!微友圈app辅助工具,微信小程序挂件辅助,详细脚本(讲解有挂)微信小程序挂件辅助破解侠是真...
实测分享!潮汕鱼虾蟹app源码... 实测分享!潮汕鱼虾蟹app源码,开心泉州小程序辅助免费下载,详细器(有挂透视)开心泉州小程序辅助免费...
今日头条!光明大厅透视辅助,天... 今日头条!光明大厅透视辅助,天天透视辅助工具,详细插件(有挂详细)1、许多玩家不知道天天透视辅助工具...
盘点一款!扣点点脚本辅助器,乐... 盘点一款!扣点点脚本辅助器,乐酷副厅外挂,详细工具(有挂方法)扣点点脚本辅助器是不是有人用挂微扑克w...
推荐十款!微乐云南小程序辅助器... 推荐十款!微乐云南小程序辅助器,边锋嘉兴辅助,详细挂(有挂总结)一、微乐云南小程序辅助器可以开透视的...
三分钟了解!微信小程序雀神挂件... 三分钟了解!微信小程序雀神挂件辅助,同城上饶辅助,详细脚本(有挂教学)1、微信小程序雀神挂件辅助辅助...