写点什么

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

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

关注

评论

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

2023 OPPO ColorOS 全球创客大赛收官,见证潘塔纳尔生态日益繁荣

极客天地

【写作训练营打卡|06】标题对一篇文章起到了什么作用?

成功的在线视频流的主要特征是什么?

3DCAT实时渲染

实时云渲染 云流化

明道云在戴斯克,从业务整合到高效管理的秘诀

明道云

对大模型和AI的认识与思考

AIWeker

AI 总结 大模型 AIGC GPT

2023年11月文章一览

codists

云渲染对高层住宅立面渲染图优势、作用、影响

Renderbus瑞云渲染农场

云渲染 渲染农场 瑞云渲染 动画云渲染 效果图云渲染

集成开发之如何用好明道云

明道云

50mA、24V、超低 IQ、低压降稳压器

芯动大师

C 语言函数:入门指南

小万哥

c c++ 程序员 后端 软件开发

AI+无代码助力企业供应链优化

明道云

【云原生•监控】基于Prometheus的云原生集群监控(理论+实践)-01

Reactor2020

监控 Prometheus kubernetes 运维

极狐GitLab CI/CD 变量黑魔法之自定义变量

极狐GitLab

DevOps gitlab 变量 CI/CD gitlab ci

包装效果图渲染技巧:怎么用云渲染省钱、省时间

Renderbus瑞云渲染农场

云渲染 云渲染农场 渲染农场

铭文市场火出圈,XRC-20有望继续演绎铭文市场神话

石头财经

以不竭之动力 深耕人才沃土▕ 软通动力及子公司鸿湖万联共推开源人才培养

新消费日报

铭文市场火出圈,XRC-20有望继续演绎铭文市场神话

BlockChain先知

【云原生•监控】基于Prometheus的云原生集群监控(理论+实践)-02

Reactor2020

监控 Prometheus kubernetes 运维

【云原生•监控】基于Prometheus的云原生集群监控(理论+实践)-03

Reactor2020

监控 Prometheus kubernetes 运维

文心一言 VS 讯飞星火 VS chatgpt (155)-- 算法导论12.3 2题

福大大架构师每日一题

福大大架构师每日一题

从零开始实现Go搜索引擎(二)FST构造算法

geange

Go golang lucene 算法 FST

降低检索系统搭建门槛,轻松实现 RAG 应用!Zilliz Cloud Pipelines 惊喜上线

Zilliz

Zilliz AIGC zillizcloud rag

多链铭文聚合协议20Exchange将为Ordi、SATS持仓用户快照空投

BlockChain先知

以太坊 NFT 市场激增:为什么要在 2024 年推出 NFT 市场?

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

铭文市场火出圈,XRC-20有望继续演绎铭文市场神话

股市老人

多链铭文聚合协议20Exchange将为Ordi、SATS持仓用户快照空投

石头财经

AI 技术在前端开发流程中如何应用??3分钟带你一览开放原子开发者大会 OpenTiny 最新资讯!

OpenTiny社区

开源 AI 前端 开放原子

JVM 小科普:Java 程序背后的老大哥

Java 工程师蔡姬

Java 程序员 JVM 21 天技术人写作行动营

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