对redux的粗略理解
redux是一个js库,用于前端应用的状态管理,但是在一个较小的项目中,即一个并不需要太多交互的项目中完全可以不用redux,非要使用的话反而增加了项目的复杂度。
关于redux就是状态与数据一一对应,数据变化状态更新。
redux的特点:1,可预测性。2,可扩展性。
可预测性:redux的可预测性是由三大原则限制的即只存在一个Store存放数据源,只能通过触发Action来给更改数据,更改数据的函数是一个纯函数,只有一个唯一的输出结果。
可扩展性:middleware
redux的单一数据流:数据更新后触发CreaterAction ,Dispatch一个Action给Store 但是在Store 中不做任何的改变直接传递到一个纯函数中对数据做出相应的改变,该函数是一个纯函数,只输出一个唯一的更改后的state,更改后将state传递给store,通过store中的store.subscibe 对数据的变化进行监听,当数据发生改变后,setState对数据做出更新,进而渲染页面(渲染页面时,react会通过diff算法找出发生改变的dom元素进行渲染,进而提高工作效率)
创建Store: import{createStore}from 'redux' 获取Store,在该文件中引入reducer函数,作为一个数据存储的仓库,所有的数据的获取与改变都要通过Store。获取数据用Store.getState,监听数据用Store.subscrib,更改数据Store.setState.在需要数据,或者需要更改数据的地方引入Store即可。
创建state 文件,存放所有应到的数据。
创建reducer文件,在该文件中引入state 文件拿到数据。
创建createAction文件 该文件是一个对象,对象中有各种方法,在哪里更改数据就在那里引入该文件。
对redux的粗略理解的更多相关文章
- redux middleware 的理解
前言 这几天看了redux middleware的运用与实现原理,写了一个百度搜索的demo,实现了类似redux-thunk和redux-logger中间件的功能. 项目地址:https://git ...
- 手写一个Redux,深入理解其原理
Redux可是一个大名鼎鼎的库,很多地方都在用,我也用了几年了,今天这篇文章就是自己来实现一个Redux,以便于深入理解他的原理.我们还是老套路,从基本的用法入手,然后自己实现一个Redux来替代源码 ...
- Redux 洋葱模型理解
下面的代码会输出: A middleware1 开始C middleware2 开始E middleware3 开始======= G =======F middleware3 结束D middlew ...
- redux中间件的理解
redux的中间件就是用来处理reducer和actions之间应用,常用的中间件有redux-thunk,redux-sage.在redux中通过applyMiddleware方法使用中间件 使用例 ...
- 视图views粗略理解
>>>>>> >>>> 创建视图: create view goodsavgview as select cat_id,avg(shop_ ...
- Thinkjs学习1—概述及MVC的粗略理解
1.概述 ThinkJS 是一款使用 ES6/7 特性全新开发的 Node.js MVC 框架,对于之前是纯前端的童鞋,可能不了解MVC框架是什么,不知道后台和前台怎么配合. 本教程以Thinkjs2 ...
- java反射机制的粗略理解
java反射机制: 涉及的对象:Class, Object, 函数:Class类:[forName(String className):static:getClass():public],Object ...
- Redux学习之我对于其工作流程的理解和实践
目录 1 工作流程图 2 各部位职责 3 Demo 1 工作流程图 2 各部位职责 我在理解这个流程图的时候,采用的是一种容易记住的办法,并且贴切实际工作职责. 我们可以把整个Redux工 ...
- fish redux 个人理解
fish redux 理解 fish redux是什么 Fish Redux 是一个基于 Redux 数据管理的组装式 flutter 应用框架, 它特别适用于构建中大型的复杂应用. 它的特点是配置式 ...
随机推荐
- 练手——用Python写的时间戳转换为北京时间的小工具
#北京时间需加上8小时bj = 8*3600 def time_stamp(times): #一天总秒数 nonDaySeconds = 24*3600 leapmonths = [ ...
- 【模板】快速幂&取余运算
输入\(b\),\(p\),\(k\)的值,求\(b^p mod k\)的值.其中\(b\),\(p\),\(k^2\)为长整型数. 1.普通做法 \(print\) \(pow(b,p)\)\(mo ...
- .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)——转载
原文链接:https://blog.walterlv.com/post/dotnet-high-performance-reflection-suggestions.html ***** 大家都说反射 ...
- SPOJ 375 QTREE - Query on a tree
思路 注意本题只能用C,不能用C++ 其他的都和上一题一样 代码 #include <stdio.h> #include <string.h> #define MAXN 100 ...
- pyqt5安装与pycharm配置
最近几天新入坑了python的GUI设计,回想一下我为什么会入门这个???好像是在知乎上看到你都用 Python 来做什么? 这篇文章,看到有人回答说将python打包成exe文件,然后就想把之前弄得 ...
- _spellmod_aura_pct
属性光环 为玩家增加光环或降低属性 `aura`光环ID `auraType1` 配置属性('空','生命值','全属性','近战攻击强度','远程攻击强度','法术强度','治疗效果','施法速度' ...
- .NET、C#和ASP.NET、ASP.NET MVC四者之间的区别
什么是.NET? .NET是微软公司下的一个开发平台,.NET核心就是.NET Framwork(.NET框架)是.NET程序开发和运行的环境,在这个平台下可以用不同的语言进行开发,因为.NET是跨语 ...
- kafka 创建消费者报错 consumer zookeeper is not a recognized option
在做kafka测试的时候,使用命令bin/kafka-console-consumer.sh --zookeeper 192.168.0.140:2181,192.168.0.141:2181 --t ...
- NetSec2019 20165327 Exp3 免杀原理与实践
NetSec2019 20165327 Exp3 免杀原理与实践 pre基础问题回答 一.免杀原理 一般是对恶意软件做处理,让它不被杀毒软件所检测.也是渗透测试中需要使用到的技术. 要做好免杀,就时清 ...
- lua调用不同lua文件中的函数
a.lua和b.lua在同一个目录下 a.lua调用b.lua中的test方法,注意b中test的写法 _M 和 a中调用方法: b.lua local _M = {}function _M.test ...