正式定档!QCon 北京站改期为2024年4月11-13日,地点:北京·国测国际会议会展中心 >>> 了解详情
写点什么

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

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

关注

评论

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

在vue的v-for中,key为什么不能用index?

bb_xiaxia1998

Vue

全生命周期服务加持,鸿蒙世界构建按下加速键

叶落便知秋

Vue响应式系统原理并实现一个双向绑定

yyds2026

Vue

Vue中的diff算法深度解析

yyds2026

Vue

热备与冷备的三大区别讲解-行云管家

行云管家

热备 冷备 双机热备

详细介绍:深圳市数字资产合约交易所软件开发中杠杆和合约的区别

W13902449729

区块链交易所开发

一站式服务:深圳区块链交易所app系统开发解决方案

W13902449729

区块链 区块链交易所

Vue响应式依赖收集原理分析-vue高级必备

yyds2026

Vue

《入侵生命周期细分实践指南系列》:异常凭证攻击

美创科技

Go语言入门15—select

良猿

Go golang 后端 11月月更

手把手教你成为荣耀开发者:付费服务开通指南

荣耀开发者服务平台

手机 安卓 荣耀 honor

售后技术支持管理指标实践

网易云信

技术支持 售后服务

融云 CDN 播放器 2.0 版本正式上线

融云 RongCloud

大咖说·禾连健康|“云原生”的应用对企业有什么样的影响

大咖说

云原生 医疗企业 禾连健康

写过vue自定义指令吗,原理是什么?.m

bb_xiaxia1998

Vue

大数据培训机构哪些口碑好?

小谷哥

筑牢国产芯片软件生态,天翼云bcache解决方案来了!

天翼云开发者社区

前端一面经典vue面试题总结

bb_xiaxia1998

Vue

孙荣辛|大数据穿针引线进阶必看——Google经典大数据知识

laofo

大数据 OLAP 数据治理 OLTP

交易所开发是什么?深圳一站式服务公司告诉你

W13902449729

交易所开发 区块链交易所

如何破解终端算力困局?PRCV这篇论文让机器人“算有余力”

优必选科技

机器人 产业 算力 机器视觉

哪些企业需要上云?上哪家好?

行云管家

云计算 云服务 企业上云

Java程序员进阶提升必备性能优化知识,阿里大牛一份性能优化手册全部总结出来了

程序员小毕

数据库 程序员 程序人生 JVM Java性能优化

玩转云端| 无惧秒杀,天翼云数据库让您双十一稳稳购

天翼云开发者社区

天翼云边缘函数、边缘安全项目入选“可信边缘计算推进计划”

天翼云开发者社区

Webpack最佳实践

Geek_02d948

webpack

WALLYS/Access Point 2×2 5G Wireless Module Wireless QCA9882 AC/AN high power industrial mini pcie card Standard Card/QCA9880

wallys-wifi6

QCA9880 QCA9882

参与有奖 | 选出你心目中最硬核的技术文章!

InfoQ写作社区官方

热门活动

Webpack插件核心原理

Geek_02d948

webpack

Webpack完整打包流程分析

Geek_02d948

webpack

马斯克拍手称好的超级App,对企业到底有什么价值

Onegun

技术栈 超级应用

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