对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 应用框架, 它特别适用于构建中大型的复杂应用. 它的特点是配置式 ...
随机推荐
- 解析url成对象形式
请编写一个JavaScript函数parseQueryString,他的用途是把URL参数解析为一个对象 var url = "https://www.baidu.com/s?ie=utf- ...
- TeamCity 创建docker构建步骤
1 dockerfile source 选择dockerfile文件的路径,一共有三种方式: 1.1.1 file content 这种方式是在线写dockerfile文件. 其在进行创建的时候会在 ...
- mysql时间相加函数DATE_ADD()
mysql中的DATE_ADD()函数 1.定义:函数向日期添加指定的时间间隔. 2.语法:DATE_ADD(date,INTERVAL expr type) date 参数是合法的日期表达式.exp ...
- 【题解】Luogu P5313 僕たちはひとつの光([Ynoi2012]D2T2)
原题传送门 lovelive好评 比赛时只拿到了60pts,还是自己太菜了 这题的思想实际有点像Luogu P3674 小清新人渣的本愿与Luogu P5071 [Ynoi2015]此时此刻的光辉 这 ...
- 【题解】Luogu P4381 [IOI2008]Island
原题传送门 题意:求基环树森林的直径(所有基环树直径之和) 首先,我们要对环上所有点的子树求出它们的直径和最大深度.然后,我们只用考虑在环上至少经过一条边的路径.那么,这种路径在环上一定有起始点和终点 ...
- HTML5中自定义属性(data-*)
在HTML元素上直接添加以‘data-’开头的属性,例如 <div data-mydata='this is my data'></div> 操作它的方式有classList ...
- 如何使用mongodb(建立原型,连接数据库)
前两天看了一个朋友做的mongodb数据库,他是自己从某网络大学试听课学的,从可读性和模块区分方面做的比较差,所以写下此文,以作交流. 首先是创建一个modules文件夹,这里面用来存放mongodb ...
- Django 中使用 Celery
起步 在 <分布式任务队列Celery使用说明> 中介绍了在 Python 中使用 Celery 来实验异步任务和定时任务功能.本文介绍如何在 Django 中使用 Celery. 安装 ...
- WinForm 设置窗体启动位置在活动屏幕右下角
WinForm 设置窗体启动位置在活动屏幕右下角 在多屏幕环境下, 默认使用鼠标所在的屏幕 1. 设置窗体的 StartPosition 为 FormStartPosition.Manual. 2. ...
- tcp config
$ sudo sysctl net.ipv4.tcp_reordering=1 $ sudo sysctl net.ipv4.tcp_thin_linear_timeouts=1 $ sudo sys ...