首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在使用RTKQ查询的组件中,在单击事件上调用updateCachedData的正确方法是什么?

在使用RTKQ查询的组件中,在单击事件上调用updateCachedData的正确方法是什么?
EN

Stack Overflow用户
提问于 2021-08-13 06:16:06
回答 1查看 319关注 0票数 0

我只能考虑在全局的某个地方存储对updateCachedData的引用,并在单击事件中使用它,但我不确定这是React实现这一点的方式。

我有一个使用Socket.IO服务器构建的通知提要。

通过单击通知,应将其从列表中删除。(列表应仅显示未读通知。)

但是当从列表中删除时,我在通知窗格中创建了一个新数组作为状态。

当我收到新的通知时,所有已删除的通知都会返回-这不是我想要的。

如何在不重新请求所有通知的情况下更改缓存条目,更准确地说是从缓存条目中删除项?

没有错误消息。

代码

代码语言:javascript
运行
AI代码解释
复制
getNotifications: build.query<
  IDbNotification[],
  IGetNotificationsQueryParams
>({
  query: (params: IGetNotificationsQueryParams) => ({
    url: `notifications?authToken=${params.authToken || ""}&limit=${
      params.limit
    }&userId=${params.userId || ""}${
      params.justUnread ? "&justUnread" : ""
    }`,
    method: "GET"
  }),
  keepUnusedDataFor: 0,
  async onCacheEntryAdded(
    arg,
    { updateCachedData, cacheDataLoaded, cacheEntryRemoved }
  ) {
    const { myIo, connectHandler } = getWebSocketConnection(
      "notifications",
      clone({
        subscribtions: arg.userId
          ? getFollowedUserIds().concat({
              uid: arg.userId,
              justUnread: arg.justUnread
            })
          : getFollowedUserIds()
      })
    );

    const listener = (eventData: IDbNotification) => {
      if (
        (eventData as any).subscriber === arg.userId &&
        (!arg.justUnread || typeof eventData.readDateTime === "undefined")
      ) {
        updateCachedData(draft => {
          draft.unshift(eventData);
          if (draft.length > arg.limit) {
            draft.pop();
          }
        });
      }
    };

    try {
      await cacheDataLoaded;

      myIo.on("notifications", listener);
    } catch {}

    await cacheEntryRemoved;

    myIo.off("notifications", listener);
    myIo.off("connect", connectHandler);
  }
})
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-13 06:21:36

为了方便起见,您可以使用updateQueryData - updateCachedData只是当前缓存条目的快捷方式。

代码语言:javascript
运行
AI代码解释
复制
        dispatch(
          api.util.updateQueryData('getNotifications', arg, (draft) => { 
           // change it here 
          })
        )

有关更多上下文,请参阅以下内容:https://redux-toolkit.js.org/rtk-query/usage/optimistic-updates

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68773842

复制
相关文章
【玩转腾讯云】云函数实时备份存储桶 A 中文件到存储桶 B
【注意】发现程序 bug ,假如从 A 存储桶备份至 B 存储桶,只能对上传到 A 中根目录的文件进行实时备份,对上传到 A 中一级及以上目录的文件,备份失败并报错。
我是技术小白
2020/04/15
3.2K0
使用云函数将CDN的日志存储到COS中
本文介绍如何使用腾讯云的云函数功能,创建两个函数,实现定时将CDN的日志存储到COS中。
rexliao
2019/05/29
5.5K0
使用云函数将CDN的日志存储到COS中
从源代码构建MySQL
一直都是用的lnmp一键安装脚本,然后最近想体验一下手动的从源代码安装lnmp的感觉
kevinfaith
2020/01/21
8590
php创建存储桶时提示access denied
$cosClient = new Qcloud\Cos\Client(array(
用户4095284
2018/12/04
1.3K0
使用 JDAudioCrawler 将下载的音频存储到本地存储
在当今数字化时代,音频数据的获取和处理变得越来越重要。本文将访问网易云音乐为案例,介绍如何使用JDAudioCrawler这个强大的工具,将音频数据存储下载到本地存储中。将详细介绍实现的流程和代码细节。
小白学大数据
2023/10/25
3170
使用模式构建:桶模式
欢迎回到MongoDB模式设计系列。上一次我们研究了属性模式,在本文中,我们将了解一下桶模式。
MongoDB中文社区
2019/04/22
7990
使用模式构建:桶模式
从内部部署到云存储的演变
如今,很多企业专注于混合云存储架构,这是因为人们相信其能够应对当今IT存储的挑战:不断扩展的数据、多个站点、灵活性和规模需求,同时满足特定的性能需求。 如今,很多企业专注于混合云存储架构,这是因为人们
静一
2018/06/08
1.1K0
Docker折腾记: (1)构建yapi容器,从构建发布到可用
Docker/Linux/Node基础, 比如Linux和docker的常用命令,shell的编写等等
CRPER
2018/08/28
2.3K0
Docker折腾记: (1)构建yapi容器,从构建发布到可用
MyBatis集成到Spring时配置MapperScannerConfigurer出错
在web项目中同时集成了spring mvc和mybatis。 将jdbc配置参数独立在外部配置文件中,然后通过<context:property-placeholder>引入。 此时在Spring中注入org.mybatis.spring.mapper.MapperScannerConfigurer,如下所示:
编程随笔
2019/09/11
2.5K0
Jenkins流水线将制品发布到Nexus存储库
本指南的目的是创建一个工作流,我们可以在该工作流中通过Maven和CI服务器来构建,存储,管理和监视已编译的制品。
DevOps云学堂
2021/12/21
2.7K0
Jenkins流水线将制品发布到Nexus存储库
将 Discuz! 论坛远程附件存储到腾讯云对象存储COS上
Discuz! 论坛可以通过配置远程附件功能将论坛的附件保存在腾讯云 COS 上,将论坛附件保存在 COS 上有以下好处:
云存储
2020/01/08
8K2
将 Discuz! 论坛远程附件存储到腾讯云对象存储COS上
使用 s3browser 管理腾讯云 COS 存储桶文件
腾讯云 COS 有提供一个桌面工具 cosbrowser,可以可视化管理 COS 存储桶文件,支持 Windows、macOS。
Jinqn
2018/08/09
5.3K0
使用 s3browser 管理腾讯云 COS 存储桶文件
私有存储云如何构建?
构建内部的云存储必须考虑到弹性、选择正确的平台、支持工作流,以及批量部署和跟公有云的集成。 随着时间的推移,存储即服务的交付进展惊人。如今,公有云,如Amazon Web Services和Micro
静一
2018/03/27
16.6K0
从0到1构建云上展厅 | 直播预告
关注腾讯云大学,了解行业最新技术动态 知识分享月 | 第七期预告 腾讯云大学10月知识分享月第七期来啦! 首发大咖讲师天团们都在严谨认真的准备中 就为给大家呈现一个精彩的直播课程 除直播分享外,还会有讲师们的直播回顾文章 给大家进行知识的内容沉淀 请大家敬请期待! 戳【阅读原文】或识别【二维码】预约直播~
腾讯产业互联网学堂1
2023/05/29
2000
从0到1构建云上展厅 |  直播预告
如何将WordPress远程附件存储到腾讯云对象存储COS上
WordPress 是使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设属于自己的网站,也可以把 WordPress 当作一个内容管理系统(CMS)来使用。
沈唁
2020/01/17
4.6K0
如何将WordPress远程附件存储到腾讯云对象存储COS上
将 WordPress 多媒体内容存储到腾讯云 COS
WordPress 可以通过第三方插件将多媒体内容保存在腾讯云 COS上,将多媒体内容保存在 COS 上有以下好处:
云存储
2020/01/16
2.1K0
将 WordPress 多媒体内容存储到腾讯云 COS
用samba将云主机做视频存储使用
最近有同事在问到,如果客户有几十个TB的视频存储需求,用云计算哪个产品能比较好解决?一般用户都具有本地视频存储服务器,但在面临本地存储的不可靠性,以及存储空间不能满足需求的场景出现后,通过云端的存储解决以上的问题,成为重要的诉求。
希望的田野
2019/09/24
3.7K0
用samba将云主机做视频存储使用
Rainbond 5.3.0 发布,从 Kubernetes 到云原生应用管理
2021新年开工,Rainbond迎来了重量级版本5.3发布,我们在云原生应用的治理、观测方面进一步耕耘,为社区用户带来了更多开箱即用的能力。为了进一步降低新用户安装和多集群部署的门槛,我们重新实现了产品安装流程,支持UI化对接公有云资源和自建基础设施。同时在应用交付、应用运维和平台管理方面做了大量的优化改进。
Rainbond开源
2021/03/07
6650
Rainbond 5.3.0 发布,从 Kubernetes 到云原生应用管理
2021新年开工,Rainbond迎来了重量级版本5.3发布,我们在云原生应用的治理、观测方面进一步耕耘,为社区用户带来了更多开箱即用的能力。为了进一步降低新用户安装和多集群部署的门槛,我们重新实现了产品安装流程,支持UI化对接公有云资源和自建基础设施。同时在应用交付、应用运维和平台管理方面做了大量的优化改进。
曾庆国
2021/02/23
1K1
dotnet 使用 SourceLink 将 NuGet 链接源代码到 GitHub 等仓库
在发布 CBB 作为 NuGet 包的时候,我期望开发者在使用我的库进行调试,可以自动链接代码到对应打包的 GitHub 上的代码,可以从本地拿到对应的源代码进行调试。这样的调试方式对于开源项目来说,将会很方便
林德熙
2020/08/04
1.5K0

相似问题

断言数组值[Symfony] [Api-platform]

17

Symfony向检索对象添加新数据

10

Symfony2 Api-Platform bin/schema问题

34

向orocommerce symfony数据网格添加删除功能

114

Symfony / api-platform补丁NotEncodableValueException:“语法错误”

113
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文