Redux在处理庞大Store并频繁进行更新操作时的性能

Q:当你拥有一个相当大的 SPA 拥有许多状态,因为有很多页面,模块,子模块和许多元素。所有子状态都关联 App 中不同的关注点,子状态由它们自己的 reducer 处理。但是当进行非常频繁的更新操作,所有的 reducer 都将被调用。

当拥有一个如下的 store:

store: {
  subStore1: {
    subSubstore1: {}
    ...
    subSubstore10: {}
  },
subStore2: {
    subSubstore1: {}
    ...
    subSubstore10: {}
  }
...
subStore10: {
    subSubstore1: {}
    ...
    subSubstore10: {}
  }
}

dispatch 一个更新 substore2: { subStore6 } 的 action。

为什么不简单地复制指针 substore1、substore3、... substore9,而现在是调用其他子 store 的 reducer?

A:可以使用 redux-ignore https://github.com/omnidan/redux-ignore

Redux Store 中只有一个 reducer 函数。你可以分解该函数,并根据你的需求来权衡便利、速度或其他因素。combineReducers 是处理此问题的常用方法,但并不是必需的。

如何处理那些已订阅状态变化的组件?

使用 react-redux。由 React-Redux 的 connect() 函数生成的包装组件会进行多次检查,以尽量减少实际组件重渲染(re-render)。这包括 shouldComponentUpdate 的默认实现,并对进入组件的 props 进行浅检查(包括从 mapStateToProps 返回的内容)。所以一般情况下,被 connect 的组件只有在状态值发生变化时才会重渲染。

参考:https://github.com/reduxjs/redux/issues/1303

原文地址:https://www.cnblogs.com/SyMind/p/10228359.html

时间: 2024-08-04 19:57:21

Redux在处理庞大Store并频繁进行更新操作时的性能的相关文章

频繁分配释放内存导致的性能问题的分析

频繁分配释放内存导致的性能问题的分析 现象 1 压力测试过程中,发现被测对象性能不够理想,具体表现为: 进程的系统态CPU消耗20,用户态CPU消耗10,系统idle大约70 2 用ps -o majflt,minflt -C program命令查看,发现majflt每秒增量为0,而minflt每秒增量大于10000. 初步分析 majflt代表major fault,中文名叫大错误,minflt代表minor fault,中文名叫小错误. 这两个数值表示一个进程自启动以来所发生的缺页中断的次数

MacBook Pro App Store无法下载和更新软件解决方案

环境:MacBook Pro 2017 系统:MacOS 10.14 问题:在App Store中无法下载和更新软件,输入App Store密码后,弹出如下对话框 咨询苹果官方技术支持电话:400-666-8800得到如下解决方案,最终问题完美解决. 启动台 -> 其它 -> 终端,打开后输入defaults delete com.apple.appstore.commerce Storefront回车,重新下载,成功. 这只是其中一种解决无法下载问题的方案,据技术支持说还有其它方法,只是这种

一些简单可能会用到的但是不是很频繁的字符串操作 不定期更新

StringReplace function StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;功能 返回替换后的字符串说明 rfReplaceAll为替换全部内容;rfIgnoreCase为忽略大小写 IntToHex  function IntToHex(Value: Integer; Digits: Integer): string; overload; 逆过程  str

DirectX11 With Windows SDK--29 计算着色器:内存模型、线程同步;实现顺序无关透明度(OIT)

前言 由于透明混合在不同的绘制顺序下结果会不同,这就要求绘制前要对物体进行排序,然后再从后往前渲染.但即便是仅渲染一个物体(如上一章的水波),也会出现透明绘制顺序不对的情况,普通的绘制是无法避免的.如果要追求正确的效果,就需要对每个像素位置对所有的像素按深度值进行排序.本章将介绍一种仅DirectX11及更高版本才能实现的顺序无关的透明度(Order-Independent Transparency,OIT),虽然它是用像素着色器来实现的,但是用到了计算着色器里面的一些相关知识. 这一章综合性很

facebook海量图片存储系统与淘宝TFS系统比较

本篇论文的原文可谓通俗易懂.行云流水.结构清晰.图文并茂……正如作者所说的——"替换Facebook的图片存储系统就像高速公路上给汽车换轮子,我们无法去追求完美的设计……我们花费了很多的注意力来保持它的简单",本篇论文也是一样,没有牵扯空洞的庞大架构.也没有晦涩零散的陈述,有的是对痛点的反思,对目标的分解,条理清晰,按部就班.既描述了宏观的整体流程,又推导了细节难点的技术突破过程.以至于译者都不需要在文中插入过多备注和解读了^_^.不过在文章末尾,译者以淘宝的解决方案作为对比,阐述了文

工作中我自己总结的hbase文档,供初学者学习。看了这个,就不用去查什么文档了。

HBase配置和使用文档 HBase配置和使用文档...................................................................................................... 1 一. HBase原理和结构说明............................................................................................. 2 二. HBase的

java面试题001

hibernate中离线查询去除重复项怎么加条件?? dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); http协议及端口,smtp协议及端口 http:超文本传输协议    端口 80 smtp:简单邮件传输协议 端口25 编写程序,完成文件复制功能 Servlet创建过程及生命周期Servlet 在容器中运行时,其实例的创建及销毁等是由容器进行控制. Servlet 的创建有两种方法. 客户端请求对应的 Servlet 时,创建

淘宝图片服务的学习

一.淘宝网的困境 对于淘宝网这样的大型电子商务网站,对于图片服务的要求特别的高.而且对于卖家来说,图片远胜于文字描述,因此卖家也格外看重图片的显示质量.访问速度等问题.根据淘宝网的流量分析,整个淘宝网流量中,图片的访问流量会占到90%以上,而主站的网页则占到不到10%.同时大量的图片需要根据不同的应用位置,生成不同大小规格的缩略图.考虑到多种不同的应用场景以及改版的可能性,一张原图有可能需要生成20多个不同尺寸规格的缩略图. 淘宝整体图片存储系统容量1800TB(1.8PB),已经占用空间990

搜索引擎技术之概要预览

搜索引擎技术之概要预览 前言 近些天在学校静心复习功课与梳理思路(找工作的事情暂缓),趁闲暇之际,常看有关搜索引擎相关技术类的文章,接触到不少此前未曾触碰到的诸多概念与技术,如爬虫,网页抓取,分词,索引,查询,排序等等,更惊叹于每一幅精彩的架构图,特此,便有记录下来的冲动,以作备忘. 本文从最主要的搜索引擎的概念谈起,到全文检索的概念,由网络蜘蛛,分词技术,系统架构,排序的解说(结合google搜索引擎的技术原理),而后到图片搜索的原理,终于以几个开源搜索引擎软件的介绍结束全文. 因为本文初次接