【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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

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

关注

评论

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

你可能需要的6个React开发小技巧

千锋IT教育

星环科技TDS 2.4.0 发布: 数据开发、数据治理、数据运营套件能力再次升级

星环科技

想做长期的 AB 实验?快来看看这些坑你踩了没

京东科技开发者

测试 测试原则 复盘归因 A/B 测试

等保三级认证备案证明是哪个机构颁发?一般要多久?

行云管家

等保 等级保护 等保三级 等保备案

MatrixOne 0.6.0 :首个云原生架构的HTAP数据库发布!

MatrixOrigin

分布式数据库 云原生数据库 国产数据库 MatrixOrigin MatrixOne

云服务器代理商选哪家好?理由是什么?

行云管家

云计算 服务器 云服务器

性能达1.5+倍!昇腾AI助力分子动力学模拟研究

华为云开发者联盟

人工智能 华为云 昇腾AI 12 月 PK 榜

Karmada多云多集群生产实践专场圆满落幕

华为云开发者联盟

云原生 华为云 12 月 PK 榜

使用Spring Data Redis 发布订阅消息

码语者

redis Spring Boot message

四步骤打造银行智能标签体系,助力银行精准营销

袋鼠云数栈

智能标签 数据画像

GaussDB(DWS)运维 :遇到truncate执行慢,怎么办

华为云开发者联盟

数据库 后端 华为云 12 月 PK 榜

【其他】快出数量级的性能是怎样炼成的

No8g攻城狮

MySQL sql 数据库·

2022年12月中国数据库排行榜:OceanBase立足创新登榜首,华为腾讯排名上升树雄心

墨天轮

数据库 opengauss TiDB oceanbase 国产数据库

10个Python脚本来自动化你的日常任务

@下一站

Python 脚本 12月日更 12月月更

大咖说·施耐德|数智技术,企业绿色低碳转型的催化剂

大咖说

双碳 绿色转型

教你用JavaScript实现点击支付框

小院里的霍大侠

JavaScript 小白 编程开发 实战案例 初学者

云原生时代数据库运维体系演进

vivo互联网技术

数据库 运维 故障自愈

Mybatis源码解析之执行SQL语句

京东科技开发者

缓存 mybatis sql 源码学习 数据库·

FL Studio2024永久免费版音乐程序

茶色酒

FL Studio FL Studio2023 FL Studio21

云智慧蝉联中国IT统一运维ITSM软件市场第一!

云智慧AIOps社区

ITSM IT运维 运维管理

软件测试丨让工作更高效,搞定Git的分支管理

测试人

git GitHub 软件测试 自动化测试 测试开发

为什么 OpenCV 计算的视频 FPS 是错的

百度Geek说

OpenCV ffmpeg 12 月 PK 榜 帧率

聚焦技术创新!旺链科技荣获“宝山区企业技术中心”认定

旺链科技

区块链 产业区块链 技术创新 12 月 PK 榜

企业级大数据平台智能运维好帮手——星环科技多模数据平台监控软件Aquila Insight

星环科技

开源依赖项管理指南

SEAL安全

12 月 PK 榜 依赖管理 传递依赖 开源依赖项

超1800万累计观看,多次占据热榜前列……“无障碍字幕直播间”带来的远不止这些!

猿始人

ArgoDB 5.1 正式发布:多模融合、实时分析和数据安全多重升级

星环科技

Java开发如何通过IoT边缘ModuleSDK进行协议转换

华为云开发者联盟

Java 开发 华为云 12 月 PK 榜

真希望你也明白runtime.Map和sync.Map

面向加薪学习

面试 并发 源码阅读 go语言 Map集合

BEVFormer-accelerate:基于EasyCV加速BEVFormer

阿里云大数据AI技术

深度学习 算法 计算机视觉 12 月 PK 榜

【知识分享】关于电子元器件封装的几个小知识

华秋PCB

封装 PCB PCB设计

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