redux你用对了吗?
redux 的三大原则
redux
的开发和使用必须要遵循三大原则,即:
- 单一数据源:整个应用的 state 被储存在一棵 object tree 中,并且这个 object tree 只存在于唯一一个 store 中
- State 是只读的:唯一改变 state 的方法就是触发 action,action 是一个用于描述已发生事件的普通对象。
- 使用纯函数来执行修改: 为了描述 action 如何改变 state tree ,你需要编写 reducers
关于第一点很容易理解,整个应用应当只有一个 store
,全局唯一的 store
有利于更好的管理全局的状态,方便开发调试,对实现“撤销”、“重做”这类的功能也更加方便。
第二点,state
是只读的,因此,我们在任何时候都不应该直接修改 state
,唯一能改变 state
的方法就是通过 dispatch
一个 action
,间接的来修改,以此来保证对大型应用的状态进行有效的管理。
第三点,要想修改 state
,必要要编写 reducer
来进行,reducer
必须是纯函数,reducer
接收先前的 state
和 action
,并且返回一个全新的 state
。
什么是纯函数?
前面我们介绍 redux
三大原则的时候提到过,修改 state
要编写 reducer
,且 reducer
必须是一个纯函数,那么问题来了,什么是纯函数呢?
维基百科里是这么定义纯函数的:
在程序设计中,若一个函数符合以下要求,则它可能被认为是纯函数:
- 此函数在相同的输入值时,需产生相同的输出。函数的输出和输入值以外的其他隐藏信息或状态无关,也和由I/O设备产生的外部输出无关。
- 该函数不能有语义上可观察的函数副作用,诸如“触发事件”,使输出设备输出,或更改输出值以外物件的内容等。
简单总结一下,如果一个函数的返回结果只依赖他的参数,并且在执行过程中没有副作用,我们就把这个函数定义为纯函数。
举个
redux你用对了吗?相关推荐
- operate函数_跟着 redux 学 compose组合函数
▲ 点击上方蓝字关注我 ▲ 把你的心 我的心串一串 串一株幸运草 串一个同心圆 文 / 景朝霞 来源公号 / 朝霞的光影笔记 ID / zhaoxiajingjing 目录0 / 热热身1 / red ...
- Redux 入门教程(三):React-Redux 的用法
前两篇教程介绍了 Redux 的基本用法和异步操作,今天是最后一部分,介绍如何在 React 项目中使用 Redux. 为了方便使用,Redux 的作者封装了一个 React 专用的库 React-R ...
- Redux 入门教程(二):中间件与异步操作
上一篇文章,我介绍了 Redux 的基本做法:用户发出 Action,Reducer 函数算出新的 State,View 重新渲染. 但是,一个关键问题没有解决:异步操作怎么办?Action 发出以后 ...
- Redux 入门教程(一):基本用法
一年半前,我写了<React 入门实例教程>,介绍了 React 的基本用法. React 只是 DOM 的一个抽象层,并不是 Web 应用的完整解决方案.有两个方面,它没涉及. 代码结构 ...
- Koa2和Redux中间件源码研究
一.Koa2中间件源码分析 在Koa2中,中间件被存放在一个数组中. 使用koa中,最常见的就是app.use(fn),use函数部分源码如下所示.首先中间件必须是个函数.若是generator函数, ...
- React+Redux+中间件
MVVM是Model-View-ViewModel的缩写.mvvm是一种设计思想.Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑:View 代表UI 组件,它负责将数据模 ...
- redux rxjs_可观察的RxJS和Redux入门指南
redux rxjs Redux-Observable is an RxJS-based middleware for Redux that allows developers to work wit ...
- redux logic_Redux-Logic简介
redux logic by Sam Ollason 通过萨姆·奥拉森(Sam Ollason) Redux-Logic简介 (An Introduction to Redux-Logic) This ...
- 使用Typescript的巧妙React上下文技巧-不是Redux
by Bill Girten 比尔·吉尔滕(Bill Girten) 使用Typescript的巧妙React上下文技巧- 不是 Redux (Clever React context tricks ...
- redux 局部刷新_如何使用Redux Observables和刷新令牌API获取新的访问令牌
redux 局部刷新 by Sachin Kumar 由Sachin Kumar 如何使用Redux Observables和刷新令牌API获取新的访问令牌 (How to get a new acc ...
最新文章
- AC日记——小书童——刷题大军 洛谷 P1926
- 值得安利!推荐7款让人眼前一亮的宝藏软件
- [Hadoop] Error: JAVA_HOME is not set
- 缓冲区溢出-基本ROP-ret2syscall
- 2021-01-07 matlab数值分析 线性方程组的迭代解法 高斯-赛德尔迭代法
- 飞鸽传书下载最新版2013
- 光引发剂主要用途_光引发剂分类及用途
- Java面试题300道
- 怎么将表中的空格都转变为0???
- Talib技术因子详解(七)
- 高级语言程序设计(C语言)----第一章 概述
- A轮、B轮、C轮融资、VC、PE、IPO概念解析
- 第十一章.软件工程(上)
- 初识python之汇率转换篇
- 网站安全扫描工具,举荐6个网站安全扫描工具
- 【渝粤题库】国家开放大学2021春1089现代教育思想题目
- 什么是等保三级?等保三级的认证流程有哪些?
- 打计算机游戏用英语怎么说,打游戏用英语怎么说
- 自定义CKeditor上传图片按钮
- Spring学习(二)—— 对象创建方式及依赖注入
热门文章
- (嵌入式)I2C温湿度采集
- Kafka-Eagle 安装到使用全教程
- do msgbox loop_do第三人称单数形式怎么写
- CCRC认证和ISO27001认证有哪些不同?企业该如何申请?
- 自然辩证法 题目1
- Stale branches 设置_一文弄懂!Word页眉页脚设置,So easy~
- 不动点迭代法(Fixed Point Iteration)迭代求根的python程序
- 留学必备物品清单,这3类你一定要带
- 可尾游标(Tailable Cursors)
- python识别花草_荐 【python】TensorFlow框架下CNN神经网络的花卉识别系统