写点什么

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

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

关注

评论

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

陪玩小程序源码:如何打造爆款陪玩平台?

DUOKE七七

php MySQL uniapp 陪玩源码

esbuild构建工具简介

天翼云开发者社区

构建工具 esbuild

淘宝商品列表API接口全攻略

tbapi

淘宝API接口 淘宝商品列表接口

和鲸科技出席全球开发者先大会专题论坛语料专场,共探 AI 基础设施重构数据协作新范式

ModelWhale

Python 人工智能 大数据 AI DeepSeek

校园网黑龙江等级保护三级解决方案

黑龙江陆陆信息测评部

深度解析字节跳动Trae:中国首款AI编程工具如何重塑开发测试生态

测试人

人工智能

AI赋能上云,打造有温度的HR SaaS“智能体”

用友BIP

HR 智能体 人力云 用友BIP YonGPT

签约!中国果汁行业代表品牌-汇源选择用友BIP

用友BIP

AI 智能体 企业数智化 用友BIP

软件实施文档,项目实施管理方案(Word原件)

金陵老街

软件实施 软件方案

GreatSQL5.7 与 8.0 对 DATE 非法值处理方式不同

GreatSQL

从 MongoDB 到 TDengine,沃太能源实现 18 倍写入性能提升

TDengine

数据库 tdengine 时序数据库

九章云极 Aladdin重塑 AI 开发范式的先锋力量

九章云极DataCanvas

签约!用友BIP助力中国南水北调打造智慧人力管理新标杆

用友BIP

AI 智能体 用友BIP 南水北调

「2024龙蜥社区年度优秀贡献者」榜单公布,恭喜上榜企业和个人

OpenAnolis小助手

开源 操作系统 龙蜥社区 龙蜥社区年度优秀贡献者

用友BIP融合场景地图发布,2000+业务场景实现一体化

用友BIP

AI 智能体 数智化 用友BIP 融合场景

Active Directory审核的常见误区

运维有小邓

日志管理 日志审计 AD域管理

国内企业与美国分支网络连接的四大实用方案

Ogcloud

企业组网 企业网络 企业网络专线 跨国企业组网

九章云极DataCanvas公司与 GSMA共推 AI 普惠算力全球化发展

九章云极DataCanvas

用友BIP携手ISV伙伴 共建企业数智化底座

用友BIP

AI 智能体 数智化 用友BIP

探索微店商品详情API接口:解锁电商数据的新篇章

代码忍者

微店商品详情API接口

非凸科技荣获“创·在上海”国际创新创业大赛总决赛优胜企业20强

非凸科技

用数据唤醒深度好眠,时序数据库 TDengine 助力安提思脑科学研究

TDengine

数据库 tdengine 时序数据库

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