Normy乐观更新实战:用optimisticData与rollbackData实现UI即时响应和自动回滚
Normy乐观更新实战用optimisticData与rollbackData实现UI即时响应和自动回滚【免费下载链接】normyAutomatic normalization and data updates for data fetching libraries (react-query, vue-query, trpc, swr, rtk-query and more)项目地址: https://gitcode.com/gh_mirrors/no/normyNormy 是一个面向数据获取库react-query、swr、rtk-query、trpc 等的数据自动归一化库。本文聚焦它的实战利器——乐观更新Optimistic Update通过optimisticData与rollbackData两个选项让 UI 在请求发出瞬间立即响应失败时又自动回滚到原数据全程无需手写缓存更新代码。为什么需要乐观更新想象一个改书名的按钮普通更新用户点击 → 等待服务器响应 → UI 才变化。网络慢时体验生硬乐观更新用户点击 → UI立刻变成新值 → 后台请求成功则维持失败则回滚。手动实现乐观更新很繁琐你要手动mutate每一个包含该数据的查询还要在失败时记得把每个查询都还原。查询一多代码又长又容易漏。这正是 Normy 解决的痛点。原理一次乐观数据更新所有相关查询 ⚡Normy 会把你应用里的查询数据按id自动归一化存储。当一次变更发生它只需知道哪个 id 的哪个字段变了就能自动找出所有引用了该对象的查询并同步更新。optimisticData就是提前告诉 Normy 即将发生的变化请求发出前Normy 用optimisticData更新归一化数据所有相关查询的 UI 立即刷新请求成功后服务端真实响应再走一次标准归一化流程UI 与服务器保持一致请求失败后rollbackData生效UI 自动恢复原状。SWR 集成一个完整示例先安装并挂载 Provider详见 packages/normy-swr/README.mdnpm install normy/swrconst updateBookNameMutation useNormalizedSWRMutation( mutation-key, async () Promise.resolve({ id: 1, name: Name updated }), { // 请求前UI 立刻显示新名字 optimisticData: { id: 1, name: Name updated }, // 失败时自动恢复旧名字 rollbackData: { id: 1, name: Name }, }, );就这么几行所有包含id: 1这本书的查询列表页、详情页……都会瞬间更新。核心实现逻辑在 useNormalizedSWRMutation.ts请求发起时触发乐观更新onError时触发回滚。react-query 集成放进 onMutate 的 context react-query 官方支持在onMutate返回 contextNormy 会订阅 MutationCache 自动读取useMutation({ mutationFn: async () ({ id: 1, name: Name 1 Updated }), onMutate: () ({ optimisticData: { id: 1, name: Name 1 Updated }, rollbackData: { id: 1, name: Name 1 }, }), });pending 状态触发乐观更新、error 状态触发回滚的监听代码位于 create-query-normalizer.ts完整文档见 packages/normy-react-query/README.md。实战技巧清单 rollbackData要存改之前的值从当前查询数据中取出旧值传入回滚才准确可加normalize: false避免重复工作如果你确定响应结构与optimisticData一致可以在 mutation 上设置normalize: false成功后不再重复归一化一次两个集成的文档都有示例嵌套对象同样有效optimisticData里的嵌套对象如author: { id, name }也会按 id 归一化一次更新联动多处顶层数组仍需手动处理往列表头部/尾部插入或删除元素这类结构变化Normy 无法判断插入位置仍需手动更新——这与它的定位一致只自动化按 id 的内容变更。动手体验跑一个官方示例 仓库内置了四种集成的可运行示例其中 SWR 示例演示了带 3 秒延迟的乐观改名 回滚git clone https://gitcode.com/gh_mirrors/no/normy关键文件SWR 乐观更新示例examples/swr/src/components/app.jsxreact-query 乐观更新示例examples/react-query/src/components/app.jsxtRPC 乐观更新示例examples/trpc/src/components/app.tsx小结选项触发时机作用optimisticData请求发出瞬间UI 立即呈现预期结果服务端响应请求成功按真实数据自动校正所有查询rollbackData请求失败自动回滚到原数据用 Normy即时响应 自动回滚从几十个缓存操作的手工活变成两行配置——这就是数据归一化带来的红利。【免费下载链接】normyAutomatic normalization and data updates for data fetching libraries (react-query, vue-query, trpc, swr, rtk-query and more)项目地址: https://gitcode.com/gh_mirrors/no/normy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

ComfyUI 节点工作流怎么用:从0到跑通第一个图生视频的5个步骤

ComfyUI 节点工作流怎么用:从0到跑通第一个图生视频的5个步骤

ComfyUI 节点工作流怎么用:从0到跑通第一个图生视频的5个步骤 【免费下载链接】ComfyUI The most powerful and modular diffusion model GUI, api and backend with a graph/nodes interface. 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI 很…

2026/8/22 14:44:07 阅读更多 →
英语考试作文

英语考试作文

这里写自定义目录标题英文原文与中文逐句对应翻译英语作文核心高频单词中英对照表英文原文与中文逐句对应翻译 英文原文中文翻译Dear Jason,亲爱的贾森:I am a high school student and now I am going to take the College Entrance Examination.我是一名高中生&a…

2026/8/22 14:44:07 阅读更多 →
substitute_hook_functions实战教程:完整API详解与全部13个错误码速查清单

substitute_hook_functions实战教程:完整API详解与全部13个错误码速查清单

substitute_hook_functions实战教程:完整API详解与全部13个错误码速查清单 【免费下载链接】substitute A free runtime modification library. 项目地址: https://gitcode.com/gh_mirrors/su/substitute substitute 是一款免费的运行时修改(runt…

2026/8/22 14:43:07 阅读更多 →

最新新闻

从零到跑通仅需5分钟:mdc-maui快速入门教程,搭建你的第一个Material Design界面

从零到跑通仅需5分钟:mdc-maui快速入门教程,搭建你的第一个Material Design界面

从零到跑通仅需5分钟:mdc-maui快速入门教程,搭建你的第一个Material Design界面 【免费下载链接】mdc-maui Material design components for .NET MAUI 项目地址: https://gitcode.com/gh_mirrors/md/mdc-maui mdc-maui(Material.Comp…

2026/8/22 15:25:20 阅读更多 →
Synology API Python 封装库实战指南:从 0 到 1 对接群晖 NAS

Synology API Python 封装库实战指南:从 0 到 1 对接群晖 NAS

Synology API Python 封装库实战指南:从 0 到 1 对接群晖 NAS 【免费下载链接】synology-api A Python wrapper around Synology API 项目地址: https://gitcode.com/gh_mirrors/sy/synology-api 想在代码里操作群晖 NAS——列文件、传文件、看磁盘状态、管下…

2026/8/22 15:25:20 阅读更多 →
使用 Tbox 打造生活小妙招智能应用:一次有趣的产品开发之旅

使用 Tbox 打造生活小妙招智能应用:一次有趣的产品开发之旅

目录 前言项目背景 解决真实生活痛点核心需求定义 开发过程回顾 第一轮开发:MVP 快速验证 1. 产品设计阶段2. 视觉设计阶段3. 开发部署阶段 第二轮迭代:功能完善升级 核心痛点分析优化方向确定第二轮开发成果 核心体验亮点 1. 对话即服务2. 场景化智能…

2026/8/22 15:25:20 阅读更多 →
MAA:明日方舟日常自动化助手,三步跑通全日常

MAA:明日方舟日常自动化助手,三步跑通全日常

MAA:明日方舟日常自动化助手,三步跑通全日常 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://g…

2026/8/22 15:25:20 阅读更多 →
Bitfocus Companion 拆解:把 Stream Deck 变成可编程的导播台

Bitfocus Companion 拆解:把 Stream Deck 变成可编程的导播台

Bitfocus Companion 拆解:把 Stream Deck 变成可编程的导播台 【免费下载链接】companion Bitfocus Companion enables the Elgato Stream Deck and other controllers to be a professional shotbox surface for an increasing amount of different presentation s…

2026/8/22 15:25:20 阅读更多 →
会讲故事才是硬实力:产品经理如何用Awesome-CheatSheets-and-MindMaps讲好PRD与团队协作沟通

会讲故事才是硬实力:产品经理如何用Awesome-CheatSheets-and-MindMaps讲好PRD与团队协作沟通

会讲故事才是硬实力:产品经理如何用Awesome-CheatSheets-and-MindMaps讲好PRD与团队协作沟通 【免费下载链接】Awesome-CheatSheets-and-MindMaps :books: Ultimate CheatSheets(Tutorials&MindMap), overview of syntax, features and practical tips, collect…

2026/8/22 15:24:20 阅读更多 →

日新闻

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

在电子硬件开发领域,PCB(印制电路板)的沉金工艺是提升产品可靠性和焊接质量的关键环节。对于需要高密度互连、长期稳定运行或高频信号传输的板卡,如“黍姐仿通行证”这类可能涉及身份识别、数据交互的硬件项目,选择正确…

2026/8/22 0:00:11 阅读更多 →
电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

这次我们来看一个针对电气考研电路科目的学习规划项目。它不是软件工具,而是一套聚焦于8月份关键节点的备考策略。对于电气工程考研的同学来说,电路分析是专业课的重中之重,也是拉开分差的关键。进入8月,复习进入强化阶段&#xf…

2026/8/22 0:00:11 阅读更多 →
消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

大家好,我是专注于前端开发与AI工具实践的技术博主。在日常使用 Claude Code 等AI编程助手时,你是否也遇到过这样的困扰:生成的代码功能上没问题,但代码风格、组件设计、交互逻辑总透着一股“AI味”——布局单调、样式简陋、交互生…

2026/8/22 0:00:11 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/21 3:21:33 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/22 8:09:09 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/21 6:07:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/21 16:42:28 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/22 7:31:03 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →