开工福利|免费学 2200+ 精品线上课,企业成员人人可得! 了解详情
写点什么

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:005689
用户头像

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

关注

评论

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

【HCDG城市行东莞站】松山湖开发者村助力企业释放数字新动能

华为云开发者联盟

云计算 华为云 华为云开发者联盟 企业号 8 月 PK 榜

5 个 实用的 JavaScript 开发小技巧

互联网工科生

JavaScript Web应用开发

这款Linux不收费,却赢得了江湖!

高端章鱼哥

Linux 开源 npm

面部表情识别技术的最新研究进展

来自四九城儿

Dreamweaver 2021中文版下载 网页编辑软件dw2021纯净版

mac

苹果mac Windows软件 Dreamweaver 2021 网页编辑软件 DW021

中国云数据仓库,双第一!

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 8 月 PK 榜

百度智能云推出828大促活动,文心AI作画低至9.9元

科技热闻

UltraEdit mac(文本编辑器) v22.0.0.18中文版下载

mac

UltraEdit 文本编辑器 苹果mac Windows软件

悦数图数据库与 keyarchOS 完成浪潮信息澎湃技术认证

悦数图数据库

数据库 图数据库 分布式图数据库

图数据库有哪些:知名图数据库产品和应用场景介绍

悦数图数据库

数据库 图数据库

第二周作业

大肚皮狒狒

提升研发效能的低代码思路

高端章鱼哥

自动化 研发效能 低代码 JNPF

IoTLink版本更新v1.38.0

山东云则信息科技

物联网

OpenTiny Vue 3.10.0 版本发布:组件 Demo 支持 Composition 写法,新增4个新组件

OpenTiny社区

前端 开源项目 UI组件库

从FTP到SFTP,哪个才是跨国传输大文件的最佳方案

镭速

大文件传输 传输大文件 跨国大文件传输

Adobe联创去世,没他就没有PDF,乔布斯也因他逆风翻盘

Openlab_cosmoplat

PDF

解码全栈

互联网工科生

开发者 全栈工程师 全栈开发

如何高效实现混合App开发?

FinFish

混合开发 小程序化 混合app 超级App开发

2023.10.14-价值最大化沙盘演练

ShineScrum

业内首份!电信和互联网数据安全标准汇编发布(附下载)

极盾科技

数据安全

内容分发网络CDN 概述

天翼云开发者社区

CDN 内容分发网络

持续领跑医疗云市场!天翼云以科技之力助力医疗行业建设

天翼云开发者社区

云计算

React前端开发架构:构建现代响应式用户界面

高端章鱼哥

React Web应用开发 组件化开发

低代码开发 轻松解决企业数字化能力建设困局

力软低代码开发平台

如何设计自动化测试落地方案

老张

自动化测试 测试方案

面部表情识别技术在人机交互中的应用

来自四九城儿

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