redux中的三个原则与先前技术

1.数据来源的唯一性

          在redux中所有的数据都是存放在你的store中,这样做的目的就是保证数据来源的唯一性。那么为什么要这样做呢?使得创建通用应用程序变得很容易,因为服务器的状态可以序列化并水合到客户机中,而不需要额外的编码工作。单个状态树也使调试或检查应用程序变得更容易;它还使您能够在开发中持久保存应用程序的状态,以获得更快的开发周期。

2.state只能是只读的状态

state只能是只读的,在你的action中不能你可以去取它的值,但是不能够去改变它,这个时候采取的方式通常是深度拷贝state,并且将其返回给一个变量,然后改变这个变量,最后将值返回出去。而且要去改变数据你只能够在的reducer中,reducer是一个描述了对象发生了一个什么样过程的函数过程。  只读状态的好处,确保视图和网络回调都不会直接写入状态。

3.使用纯函数进行改变

         reducer的实质其实就是一个纯函数,那么什么是纯函数呢?函数中参数的调用的是什么,返回的就是什么。在action中其接受两个参数,第一个是state,第二个参数就是action ,其表述的方式是下面这种形式,state中通常默认的是一个对象,但是也可以是其他的值。

先前技术

redux是一个混合的遗产,其与某些模式与技术相同,但是又有所不同,下面就来进行说明。

1.Flux

其与redux相同的地方在于,它们都强调其更新状态的逻辑在同一个层中,reducer在redux  stores在Flux中。另外它们改变数据的逻辑都是放在action当中;其不同之处在于redux没有Dispatcher这个概念,因为在redux中,改变更新状态这个逻辑中的reducer是一个纯函数。这样的逻辑使得数据的管理更加的直观清楚明白。与Flux的另一个重要区别是,Redux假设从不修改数据。也可以很好地为状态使用普通对象和数组,但是强烈建议在reduce中对它们进行修改。

2.Elm

其是一种函数式编程语言,其具有与redux相同的更新结构(state,action) => (action),与Redux不同,Elm是一种语言,因此它能够从许多方面受益,比如强制纯度、静态类型、开箱即用的不变性和模式匹配(使用case表达式)。

3.Immutable

其是一个实现持久数据的结构的一个JS库。其可以与redux进行正交使用。redux中的store里面的储存的内容可以是普通对象,也可以是不可变对象,也可以是其他对象。

对于Immutable,可能需要一种(反)序列化机制来编写通用应用程序,并从服务器水化它们的状态,但除此之外,您可以使用任何数据存储库,只要它支持不变性。即使不可变库支持游标,也不应该在Redux应用程序中使用它们。整个状态树应该被认为是只读的,应该使用Redux更新状态并订阅更新。因此,通过游标写入对Redux没有意义。如果游标的惟一用例是将状态树与UI树解耦,并逐步细化游标,那么应该转而考虑选择器。选择器是可组合的getter函数。

4.Baobab

其又是另外一种完成好的JSAPI,用于更新js中的普通对象。将其与redux联合使用时,会有一点好处。

Baobab提供的大多数功能都与用游标更新数据有关,但是Redux强调,更新数据的惟一方法是分派一个操作。因此,它们以不同的方式解决相同的问题,并不互补。
   与Immutable不同的是,Baobab还没有实现任何特殊的有效数据结构,所以与Redux一起使用并没有什么好处。在这种情况下,使用普通对象更容易

5.RxJs

是一种最好的方式去管理异步应用程序的复杂性,当其与redux一起使用时,会是整个程序运行的更好,例如在下面的这个例子

如果已经使用Rx,也可以不需要Redux 。在Rx中重新实现Redux并不难。

redux中的三个原则与先前技术相关推荐

  1. [Redux/Mobx] redux它的三个原则是什么?

    [Redux/Mobx] redux它的三个原则是什么? 单一数据源: 整个应用的只有一个store,store的state存在于唯一的object tree上 state只读:state不可操作,要 ...

  2. 技术管理工作中的三个原则

    技术管理工作中的三个原则 我们在工作中常常会遇到的三个原则:闭环原则.谁难受,谁推进原则.Think Bigger原则. 一.闭环原则 作为一个管理者,这是非常重要的.你应该起到上传下达的作用,你要让 ...

  3. 软件中的八二原则(三)

    软件中的八二原则(三) 4. 关于管家婆和译言的说法 4.1. 管家婆 任我行在进销存领域是不错的公司,其管家婆系列在小型商户中很畅销,我与其创始人曾在一个楼上办公.因此,我知道管家婆的来龙去脉,他们 ...

  4. 控制台修改应用端口_应用架构六边型架构:三个原则和一个实现示例

    Hexagonal Architecture于2005年由Alistair Cockburn撰写,是一个具有许多优势的软件架构,自2015年以来又重新引起了人们的兴趣. 六角架构的初衷是: 允许应用程 ...

  5. 「应用架构」六边型架构:三个原则和一个实现示例

    Hexagonal Architecture于2005年由Alistair Cockburn撰写,是一个具有许多优势的软件架构,自2015年以来又重新引起了人们的兴趣. 六角架构的初衷是: 允许应用程 ...

  6. python入门基础知识教程-Python基础知识入门,这三个原则是你要知道的,还有教程...

    很多人都说Python是最容易入门的编程语言,但是入门Python,你必须要明白这三个原则. 否则,你一定很难入门Python. 第一,一定要从最简单的开始(尾部还有最简单的入门教程) 我接触过一些想 ...

  7. python入门有基础-Python基础知识入门,这三个原则是你要知道的,还有教程

    很多人都说Python是最容易入门的编程语言,但是入门Python,你必须要明白这三个原则. 否则,你一定很难入门Python. 第一,一定要从最简单的开始(尾部还有最简单的入门教程) 我接触过一些想 ...

  8. 一个插件让你在 Redux 中写 promise 事半功倍

    Redux 的应用给我们开发带来了很多便利,让组件间交互不再那么复杂,但 Redux 也有它的短板,我们知道要通过 Redux 改变一个 state 需要定义 actionType→action→re ...

  9. C++中的开闭原则使用C++多态功能实现附源码

    开闭原则 使用开闭原则之前一个银行柜员会将所有的工作都操作一遍,这样会大大降低办事的效率,而且银行的业务不适合扩展,没扩展一项业务就要培训所有的业务员.改为使用开闭原则之后,每个银行业务员只负责一项业 ...

最新文章

  1. 回车键兼容多个浏览器
  2. HDU 2149 Public Sale
  3. 028_jQuery数据
  4. 关于props的注意事项!
  5. 2020年8月编程语言排行榜新鲜出炉 - 编程语言世界的假期
  6. 【实施工程师之家】linux安装mysql(yum安装mysql)
  7. pip不是内部或外部命令,也不是可运行的程序 或批处理文件--解决办法
  8. java checkproperties(this)_【转载】java读取.properties配置文件的几种方法
  9. Java List添加元素
  10. 如何使用更多数据更新神经网络模型
  11. vs离线安装Qt开发插件vsix
  12. Python实现的图片转字符画,附源码
  13. 源码 源代码下载 - www.pudn.com 程序员联合开发网
  14. 【权威发布】360追日团队:Xshellghost技术分析——入侵感染供应链软件的大规模定向攻击
  15. woocommerce-paypal-payments/modules/ppcp-button/src/Assets/SmartButton.php如何解决AVADA主题
  16. 什么是Timestamp——时间戳?
  17. android车机启动器,【分享】车载启动器 AG 车载桌面启动器1.5.1车机桌面
  18. java毕业设计会议室预约管理系统(附源码、数据库)
  19. MySQL详细学习教程(一)
  20. go 电脑屏幕截图,二维码识别 示例

热门文章

  1. 软件测试周刊(第64期):要和能让你快乐的一切,定期联系。
  2. 粒子群算法早熟在边界上怎么办
  3. Mac 安装pd虚拟机,远程桌面无法使用ctrl或其他符号无法使用问题
  4. 解析二维码如何批量解析二维码内容
  5. WinSCP之Windows与Windows之间传输文件
  6. DELL灵越 n4030笔记本安装win7之无线网卡驱动安装
  7. Any to Any 实时变声的实现与落地丨RTC Dev Meetup
  8. WPS(Wi-Fi Protected Setup)
  9. 迅雷、快车、QQ旋风链接的加密解密方式原理
  10. STM32fxx 按键