尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
自定义合并策略:深入ngrx-store-localstorage的mergeReducer与deepmerge数组覆盖机制
自定义合并策略深入ngrx-store-localstorage的mergeReducer与deepmerge数组覆盖机制【免费下载链接】ngrx-store-localstorageSimple syncing between ngrx store and local storage项目地址: https://gitcode.com/gh_mirrors/ng/ngrx-store-localstoragengrx-store-localstorage 是面向 ngrx/store 的状态持久化插件负责在 NgRx 状态仓库与浏览器 localStorage 之间双向同步实现页面刷新后状态自动恢复。本文聚焦两个核心机制mergeReducer自定义合并策略以及默认合并中 deepmerge 的数组覆盖行为帮新手快速搞懂状态复活的完整链路。 先搞懂合并发生在哪localStorageSync 的三步包装加载localStorageSync配置后每个 action 都会先经过库的包装层再进入你的业务 reducer调用顺序在projects/lib/src/lib/index.ts#L336-L351用你的 reducer 算出默认状态得到nextState执行mergeReducer(nextState, rehydratedState, action)把从 localStorage 读出的水合状态合并进去合并结果再交给你的真实 reducer 产出最终状态。也就是说无论默认还是自定义合并策略都发生在业务 reducer 之前它决定的是 reducer 看到的初始状态。⚙️ 默认合并策略deep merge 深合并 数组覆盖不传mergeReducer时库自动使用内置的defaultMergeReducer源码见projects/lib/src/lib/index.ts#L277-L299三个关键点时机仅当 action 为ngrx/store/init或ngrx/store/update-reducers时才合并其余动作原样放行方式调用deepmerge做深合并——对象逐键合并localStorage 里存的属性覆盖默认值没存的属性保留默认值数组覆盖给 deepmerge 传入了自定义arrayMerge回调overwriteMerge其实现只有一行——直接返回源数组即存储中的数组。 为什么数组要覆盖deepmerge 默认拼接的坑deepmerge 对数组的默认行为是把两边数组拼接先 destination 后 source。假设代码里的默认状态tabs: [1, 2]localStorage 里已存的快照tabs: [1, 2, 3]若按默认行为合并刷新后会得到[1, 2, 1, 2, 3]——列表凭空多出一堆重复项。而overwriteMerge让数组遵循最后一次写入获胜的语义存储是最新快照数组整体替换代码默认值得到干净的[1, 2, 3]。对象仍走深合并存的覆盖、没存的保留依然成立。这正是刷新后列表重复问题的根源也是默认策略要显式处理数组的原因。️ 如何写自定义 mergeReducer签名与常见场景配置接口中mergeReducer的类型定义在projects/lib/src/lib/index.ts#L375-L385mergeReducer?: (state: any, rehydratedState: any, action: any) any;state当前内存中的初始状态reducer 的默认状态rehydratedState按keys配置从 localStorage 读出的水合状态action当前动作可按动作类型分支处理返回值就是即将交给业务 reducer 的初始状态。常见使用场景部分覆盖只接受存储中的某些字段忽略其余混合策略某些 feature 全量深合并某些只取指定字段数据迁移合并阶段把旧版存储结构转换成新版结构。 实战示例按 feature 混合合并官方测试spec/index.spec.ts#L751-L800给出了典型示例feature1、feature2分片存储自定义合并函数对两者采用不同策略const mergeReducer (state, rehydratedState, action) ({ ...state, feature1: { slice11: rehydratedState.feature1.slice11 }, // 只取一个字段 feature2: deepmerge(state.feature2, rehydratedState.feature2), // 完整深合并 });配合localStorageSync({ keys: [...], rehydrate: true, mergeReducer })后最终状态里feature1只保留了存储值中的slice11feature2则完成了完整深合并。可见合并策略完全交给开发者字段挑选与deepmerge可以在同一应用里自由搭配。⚡ 总结合并策略速查清单不传mergeReducer默认策略 深合并 数组整体覆盖多数场景直接可用想精细控制恢复哪些字段传入自定义函数返回合并后的初始状态即可遇到恢复后数组重复检查是否误用了 deepmerge 的默认arrayMerge拼接合并只发生在 init / update-reducers 动作、且在业务 reducer 之前不会干扰后续任何 action。更多配置项说明可参考 README.md 中mergeReducer的官方描述第 98 行。【免费下载链接】ngrx-store-localstorageSimple syncing between ngrx store and local storage项目地址: https://gitcode.com/gh_mirrors/ng/ngrx-store-localstorage创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

如何10分钟跑通flint:完整构建安装指南与常见坑清单

如何10分钟跑通flint:完整构建安装指南与常见坑清单

如何10分钟跑通flint:完整构建安装指南与常见坑清单 【免费下载链接】flint An open-source lint program for C developed by, and formerly used at Facebook. 项目地址: https://gitcode.com/gh_mirrors/fli/flint flint 是 Facebook 开源的 C Lint 工具&…

📅 2026/10/22 9:05:52
5分钟上手ruby-graphviz:从零绘制你的第一张依赖关系图

5分钟上手ruby-graphviz:从零绘制你的第一张依赖关系图

5分钟上手ruby-graphviz:从零绘制你的第一张依赖关系图 【免费下载链接】Ruby-Graphviz [MIRROR] Ruby interface to the GraphViz graphing tool 项目地址: https://gitcode.com/gh_mirrors/ru/Ruby-Graphviz ruby-graphviz 是 Ruby 语言连接 GraphViz 绘图…

📅 2026/10/27 1:53:09
3种内置存储对比详解:Shallows MemoryStorage、DiskStorage 与 NSCacheStorage 实战指南

3种内置存储对比详解:Shallows MemoryStorage、DiskStorage 与 NSCacheStorage 实战指南

3种内置存储对比详解:Shallows MemoryStorage、DiskStorage 与 NSCacheStorage 实战指南 【免费下载链接】Shallows 🛶 Your lightweight persistence toolbox 项目地址: https://gitcode.com/gh_mirrors/sh/Shallows Shallows 是一款面向 Swift …

📅 2026/10/22 9:06:34
MORE NEWS

更多资讯

📰

电工证免费学习时间最新政策解读 良心建议给你讲清楚

电工证免费学习时间最新政策解读 良心建议给你讲清楚 你是不是也在想: 学历不高怕报不上名 ?其实,很多想考电工证的朋友,最大的顾虑就是“我学历不够,能不能报名?”今天我作为南阳地区一家中小施工企业的安全负责人,就来和大家说说…

📰

建筑特种工是什么郑州报考避坑指南

建筑特种工是什么郑州报考避坑指南 你是不是正愁不知道哪里报名,担心被中介坑了钱还拿不到证?别急,今天就给你讲清楚什么是建筑特种工,怎么在郑州报考不踩坑,还能一次通过考试,拿到手里的证。…

📰

报名电工证不想考了?担心多久拿证还能转回来?

报名电工证不想考了?担心多久拿证还能转回来? 之前考的证在外省能不能转过来?这个问题其实很多人都问过,特别是在外地工作或者跨省打工的朋友。如果你已经报名电工证,但突然不想考了,那一定是在纠结报名费用、考试难度、拿证时间,甚至证书能不能跨省使…

📰

陈运秋电工证怎么考?上岗必备全流程避坑指南

陈运秋电工证怎么考?上岗必备全流程避坑指南 你是不是也在为“ 陈运秋电工证 ”发愁?不知道该去哪里报名,怕被中介骗钱,更怕考不过影响工作?别急,今天就给你讲透电工证报考的 关键步骤 ,教你 避开中介陷阱 ,顺利拿下 上岗必备 的电工证。…

📰

建筑施工电工证有效期多久 上岗必备别再被坑了

建筑施工电工证有效期多久 上岗必备别再被坑了 你是不是也遇到过这种情况:工地开工在即,却不知道去哪里考个建筑施工电工证,结果被中介忽悠,花了钱还考了个无效的证?这种事在我们这行太常见了,尤其是刚入行的新人,不懂流程、不了解政策,一不小心就被…

📰

工地太忙根本没时间复习考试?电工证在哪里查询靠谱+考前押题攻略来了

工地太忙根本没时间复习考试?电工证在哪里查询靠谱+考前押题攻略来了 工地太忙根本没时间复习考试?电工证在哪里查询靠谱,这几乎是每个一线特种作业人员的真实写照。特别是像许昌这样的工程重镇,项目多、工期紧、人员流动性大,很多人连抽空准备考试的时…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬