【ArchSummit 】会议即将开幕,一起来看架构师在AI时代的“生存法则”总结! 了解详情
写点什么

Redux:受 Flux 启发的一种架构风格

  • 2015-12-03
  • 本文字数:1090 字

    阅读完需:约 4 分钟

Redux 使用了类似于 Flux 的单向数据流,但是它只有一个单一的 store 对象,这个 store 对象通过克隆原始的 store 来改变,它使用了一些函数,并不产生副作用。Redux 中没有 Dispatcher。

Redux 是受到了 Facebook Flux Elm 启发的应用构架。像在 Flux 中一样,Redux 中的数据流是单向的,这是为了简化应用构架并使得推论变得简单。不像 Flux,在 Redux 中有一个单一的 store 对象,包含整个应用程序的 state。这个 store 是由对象树结构组成的,它是不变的。每次 state 需要改变的时候,一个新的对象树就创造了出来,合并了先前 state 中的数据和改变的数据。当一个 action 对象被分派到 store 中的时候,改变就被触发。action 是一个简单的对象,其中包含了需要执行的操作的类型以及一些负载。改变由 reducers 来执行,reducers 是没有副作用的纯函数,将先前的 state 和一个 action 作为参数。它们会返回由应用 action 产生的新的 state。

Store 不是一个类,而是一个伴随着一些方法的对象。通过在应用程序的最初的 state 执行 root reducer 可以创造出 store。为了扩展应用程序,我们需要添加附加的 reducers。每个 reducer 都维护一个 state 树的一支。Redux 提供了一个方法,可以将 reducers 合并成一个,当 store 被创造出来的时候,它可以做一个简单的调用。

不像 Flux 一样,在 Redux 中没有主要的 Dispatcher。当一个 action 需要被执行时,store 的 dispatch() 方法被调用,将 action 当作参数。然后所有的监听器被通知 state 已经改变了,它们可以选择去获取新的 state,然后相应地呈现相关组成部分。

虽然 Redux 可以与任意的 JavaScript 框架一起使用来构建应用程序,它也是 React 的一个标准搭配,因为这个框架可以让开发者“把 UI 描述为 state 的函数”,Redux 的关注点是基于不同的 actions,安全地对 state 执行更新操作。

直到八月达到了 2.1.0 版本,Flux 源源不断地在提交更新,但是近三个月内的改善非常少。 GitHub repository 指出到目前为止,125 个问题已经解决,还有 15 个问题仍然悬而未决。它们是一些次要的增强请求,有些问题和文档有关,有些是询问,其中一个是错误报告。除非 Facebook 正在开发未开拓的市场,Flux 现在看上去非常稳定,只有一小部分新的东西在我们眼前。

查看英文原文: Redux: An Architectural Style Inspired by Flux


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群(已满),InfoQ 读者交流群(#2))。

2015-12-03 18:005513
用户头像

发布了 218 篇内容, 共 65.3 次阅读, 收获喜欢 76 次。

关注

评论

发布
暂无评论
发现更多内容

【前端 · 面试 】HTTP 总结(五)—— GET 和 POST

编程三昧

面试 大前端 HTTP 8月日更 get和post

16条代码规范建议,快看看自己做到没,Java从基础到高级知识点汇总

欢喜学安卓

Java 程序员 面试 后端

电商秒杀系统架构设计

华仔架构训练营

架构实战营 - 第四模块作业

李东旭

「架构实战营」

15道常考SpringBoot面试题整理,字节跳动Java金三银四解析

欢喜学安卓

Java 程序员 面试 后端

Vue深入学习2—虚拟DOM和Diff算法

魁首

DOM Vue 3 Diff

ELK性能优化实战总结:我强任我强,美的Java面试题

Geek_f90455

Java 程序员 面试 后端

保持信心

Nydia

架构实战营 模块四 作业

一雄

作业 架构实战营 模块四

15-Java枚举类详解【干货笔记,2021年Java高级面试题

欢喜学安卓

Java 程序员 面试 后端

异或位算法的高效玩法

陈皮的JavaLib

Java 面试 算法 8月日更

2021最新版SpringCloud高频面试题分享,【性能优化实战

欢喜学安卓

Java 程序员 面试 后端

20位大厂面试官推荐的《Java面试八股文,高级架构师百度云资源

欢喜学安卓

Java 程序员 面试 后端

Linux之lsof命令

入门小站

Linux

404,【大牛系列教学

欢喜学安卓

Java 程序员 面试 后端

常见的静态负载均衡算法

Albert

算法 8月日更

Dagger2源码分析(二,深入理解Java虚拟集百度云

Geek_f90455

Java 程序员 面试 后端

网络攻防学习笔记 Day96

穿过生命散发芬芳

态势感知 网络攻防 8月日更

2020年五面蚂蚁,中级Java开发人员要掌握的技术

欢喜学安卓

Java 程序员 面试 后端

数据缓存历险记(三)--老头的LRU很带劲

卢卡多多

redis LRU 8月日更

C#索引器的实现,黑马程序员Java基础入门

Geek_f90455

Java 程序员 面试 后端

Vue深入学习3—数据响应式原理

魁首

深入学习 CSS 中的伪元素 ::before 和 ::after

devpoint

CSS css3 CSS语法 8月日更

Java并发--synchronized原子性的底层机制剖析

JVM 并发 线程安全

【设计模式】适配器模式

Andy阿辉

C# 后端 设计模式 8月日更

ArrayList(Java8,阿里大牛把「服务雪崩」玩到了极致

Geek_f90455

Java 程序员 面试 后端

C#位运算,面试要掌握这几个关键点

Geek_f90455

Java 程序员 面试 后端

前端之数据结构(二)

Augus

数据结构 8月日更

JVM实践--实例解析字节码常量池

JVM 常量池 字节码

apk瘦身;如何缩小体积呢,Java面试笔试题及答案

欢喜学安卓

Java 程序员 面试 后端

Dubbo如何支持本地调用?InJvm方式解析,阿里官方推荐

Geek_f90455

Java 程序员 面试 后端

Redux:受Flux启发的一种架构风格_JavaScript_Abel Avram_InfoQ精选文章