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的粗略理解的更多相关文章

  1. redux middleware 的理解

    前言 这几天看了redux middleware的运用与实现原理,写了一个百度搜索的demo,实现了类似redux-thunk和redux-logger中间件的功能. 项目地址:https://git ...

  2. 手写一个Redux,深入理解其原理

    Redux可是一个大名鼎鼎的库,很多地方都在用,我也用了几年了,今天这篇文章就是自己来实现一个Redux,以便于深入理解他的原理.我们还是老套路,从基本的用法入手,然后自己实现一个Redux来替代源码 ...

  3. Redux 洋葱模型理解

    下面的代码会输出: A middleware1 开始C middleware2 开始E middleware3 开始======= G =======F middleware3 结束D middlew ...

  4. redux中间件的理解

    redux的中间件就是用来处理reducer和actions之间应用,常用的中间件有redux-thunk,redux-sage.在redux中通过applyMiddleware方法使用中间件 使用例 ...

  5. 视图views粗略理解

    >>>>>> >>>> 创建视图: create view goodsavgview as  select cat_id,avg(shop_ ...

  6. Thinkjs学习1—概述及MVC的粗略理解

    1.概述 ThinkJS 是一款使用 ES6/7 特性全新开发的 Node.js MVC 框架,对于之前是纯前端的童鞋,可能不了解MVC框架是什么,不知道后台和前台怎么配合. 本教程以Thinkjs2 ...

  7. java反射机制的粗略理解

    java反射机制: 涉及的对象:Class, Object, 函数:Class类:[forName(String className):static:getClass():public],Object ...

  8. Redux学习之我对于其工作流程的理解和实践

      目录 1 工作流程图 2 各部位职责 3 Demo   1 工作流程图   2 各部位职责 我在理解这个流程图的时候,采用的是一种容易记住的办法,并且贴切实际工作职责. 我们可以把整个Redux工 ...

  9. fish redux 个人理解

    fish redux 理解 fish redux是什么 Fish Redux 是一个基于 Redux 数据管理的组装式 flutter 应用框架, 它特别适用于构建中大型的复杂应用. 它的特点是配置式 ...

随机推荐

  1. 在mysql 中使用utf8的问题

    在MapReducer插入mysql 遇到了 Incorrect string value: '\xF0\x9F\x98\xAD",...' for column 'commentConte ...

  2. 在java中使用ssm框架的定时的实现

    1.首先需要在application.xml里面配置如下的代码: xmlns:task="http://www.springframework.org/schema/task http:// ...

  3. 对于react中的this.setState的理解

    一.this.setState第二个参数的作用:修改数据更新后最新的DOM结构 二.this.setState为什么是异步的? 1.setState只在合成事件和钩子函数中是“异步”的,在原生事件和s ...

  4. C++环境设置

    g++ -V #include <iostream> int main() { std::cout << "Hello World!\n"; return ...

  5. 原创《开源一个用 vue 写的树层级组件 vue-ztree》

    最近由于后台管理项目的需要,页面需要制作一个无限树的需求,我第一感就想到了插件 ztree,不过我觉得它太大了,还是自己动手丰衣足食吧. ztree 的 demo 地址:http://www.tree ...

  6. NOIP 2018 划水记

    (此处不应有目录) (本来想咕掉这篇游记) Day -1 今天信心题,这个毒瘤出题人怎么出了一堆垃圾题(smallfat批判这个垃圾题). T2,T3是送分题.T1考了个noip根本不会考得类欧几里德 ...

  7. SSM学习(一)Mybatis

    Mybatis Notes Mybatis First 创建Maven项目 配置依赖 <dependencies> <dependency> <groupId>ju ...

  8. VS2110。VC++编译错误"error LNK2005: 已经在 XXX.obj 中定义的问题"

    有时候我们会在头文件当中定义一些全局变量或者全局函数,这种做法会比较方便,但有时候会出现“编译错误"error LNK2005: 已经在 XXX.obj 中定义的问题"的链接问题. ...

  9. [转载]linux下网卡漂移导致网络不可用

    转自:https://blog.csdn.net/hyatsz/article/details/47690993 linux下网卡漂移导致网络不可用 2015年08月16日 00:48:50 hyat ...

  10. ssm框架中文请求乱码get

    <bean id="utf8Charset" class="java.nio.charset.Charset" factory-method=" ...