NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

关注

评论

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

基于Serverless实现静态博客访问统计功能

zFish

Serverless AWS Hugo Pulumi

产品经理训练营第 0 期 第二次作业

孙行者

第0期 产品经理训练营

产品经理训练营 - 第二次作业

Jophie

产品经理训练营

范文写作结构分析之“危险的分工”

JiangX

28天写作

给新春一台S,给用户三个S:华为智慧屏的新旅程

脑极体

在nodejs中创建child process

程序那些事

多线程 事件驱动 nodejs 并发 程序那些事

开发质量提升系列:checklist 投产检查列表(下)

罗小龙

代码质量 28天写作 checklist

Vue.js笔试题解决业务中常见问题

我是哪吒

程序员 面试 Vue 大前端

产品思维和意识

让我思考一会儿

boltdb源码阅读

行如风

数据库 源码剖析 Go 语言

Logi-KafkaManager开源之路:一站式Kafka集群指标监控与运维管控平台

张亮

Java 大数据 kafka 开源 消息队列

Android硬编解码MediaCodec使用笔记

Changing Lin

android 音视频

Serverless应用开发小记

zFish

DevOps AWS IaC #Serverless Terraform

惊呆了!某东Java大咖的MySQL笔记手册流传出来了,胜过看10本书

Java架构之路

Java 程序员 架构 面试 编程语言

阿里巴巴十亿级并发系统设计手册已开源(2021最新版)

比伯

Java 编程 架构 面试 计算机

产品 0 期 - 第二周作业

vipyinzhiwei

产品经理训练营

spring中那些让你爱不释手的代码技巧(续集)

Java架构师迁哥

精选算法面试-哈希表III

李孟聊AI

面试 算法

第九周作业&总结

胡益

连肝7个晚上,总结了计算机网络的知识点!(共66条)

我是哪吒

程序员 面试 浏览器 计算机网络 HTTP

2020出行之变(三):智能交通的星罗棋布

脑极体

产品质量战略

L3C老司机

2021,你值得看的华为/字节/腾讯/京东/网易/滴滴面经分享

比伯

Java 编程 架构 面试 计算机

Postgreshub中文资源网介绍

PostgreSQLChina

数据库 postgresql 开源 软件 开源社区

图解计算机中的数据表示形式

冰河

程序员 计算机 二进制数据

第二周-总结-胡赵凯

hisun胡

产品经理 产品经理训练营

Flink 中极其重要的 Time 与 Window 详细解析(深度好文,建议收藏)

五分钟学大数据

大数据 flink

甲方日常 89

句子

工作 随笔杂谈 日常

同VLAN不同网段能否ping通

懂点EXCEL就行!教你利用Python做数据筛选(上)

智分析

Python Excel 数据清洗

第二周-作业-胡赵凯

hisun胡

产品经理 产品经理训练营

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