1 UI组件与容器组件的拆分

UI组件(傻瓜组件):只负责页面显示,没有任何逻辑

容器组件(聪明组件):并不去管UI到底长成什么样,关注的是整个业务逻辑

2 无状态组件

一个普通的函数就是无状态组件 开销比较低

而class..extends..要执行一些生命周期函数

结论:当定义一个UI组件 没有逻辑操作的时候一般使用无状态组件。

3 Redux中 发送异步请求获取数据

4 使用Redux-thunk中间件进行ajax请求发送

Redux-thunk可以把复杂的异步请求逻辑放到action里处理 而不是都写到组件里。

这时action已经不是一个对象了,可以是一个函数

而且函数返回的第一参数是dispatch

5 到底什么是redux的中间件

redux中间件的中间指的是action和store之间

以前action只能是一个对象,派发给store

现在使用了redux-thunk后 action可以是一个函数

实际上的中间件就是对dispatch的一个升级和封装

最原始的就是把对象传递给store,现在使用redux-thunk后

调用dispatch方法,如果传入的是一个对象,那和之前一样,

假设传入的是一个函数, 会让你函数先执行,执行完的时候,需要调用store时候再去调用

市场上的两种中间件:

redux-thunk是把异步请求放到action里面

redux-sage是把异步请求放到单独的文件里面去处理

6 Redux-saga中间件的使用

把异步逻辑拆分到saga里面去。

8 react-redux的使用

这个包帮助我们在react中更加方便的使用redux

1.Provider

这个组件之下所有的组件都有store了

在子组件中,之前:

之后:

(让组件和store做连接)

再进一步:

口诀:

connect是连接 TodoList和store做连接,通过mapStateToProps这个映射关系

再进异步:

Provider 提供器

然后通过connect方法做连接

10 使用React-redux完成TodoList功能

todolist是一个UI组件

但是connect把他包装后使其变成了一个容器组件

(六)Redux进阶的更多相关文章

  1. github+hexo搭建自己的博客网站(六)进阶配置(搜索引擎收录,优化你的url)

    详细的可以查看hexo博客的演示:https://saucxs.github.io/ 绑定了域名: http://www.chengxinsong.cn hexo+github博客网站源码(可以clo ...

  2. redux进阶 --- 中间件和异步操作

    你为什么需要异步操作? https://stackoverflow.com/questions/34570758/why-do-we-need-middleware-for-async-flow-in ...

  3. Redux进阶(一)

    State的不可变化带来的麻烦 在用Redux处理深度复杂的数据时会有一些麻烦.由于js的特性,我们知道当对一个对象进行复制时实际上是复制它的引用,除非你对这个对象进行深度复制.Redux要求你每次你 ...

  4. Redux进阶(像VUEX一样使用Redux)

    更好的阅度体验 前言 redux的问题 方案目标 如何实现 思考 前言 Redux是一个非常实用的状态管理库,对于大多数使用React库的开发者来说,Redux都是会接触到的.在使用Redux享受其带 ...

  5. Redux进阶(Immutable.js)

    更好的阅读体验 更好的阅度体验 Immutable.js Immutable的优势 1. 保证不可变(每次通过Immutable.js操作的对象都会返回一个新的对象) 2. 丰富的API 3. 性能好 ...

  6. Redux 进阶之 react-redux 和 redux-thunk 的应用

    1. react-redux React-Redux 是 Redux 的官方 React 绑定库. React-Redux 能够使你的React组件从Redux store中读取数据,并且向 stor ...

  7. MongoDB学习笔记六:进阶指南

    [数据库命令]『命令的工作原理』MongoDB中的命令其实是作为一种特殊类型的查询来实现的,这些查询针对$cmd集合来执行.runCommand仅仅是接受命令文档,执行等价查询,因此,> db. ...

  8. Redux进阶(Redux背后的Flux)

    简介 Flux是一种搭建WEB客户端的应用架构,更像是一种模式而不是一个框架. 特点 单向数据流 与MVC的比较 1.传统的MVC如下所示(是一个双向数据流模型) 用户触发事件 View通知Contr ...

  9. .NetCore下使用Prometheus实现系统监控和警报 (六)进阶Grafana集成自定义收集指标

    Prometheus中包含了很多收集指标,那么我们怎来在Grafana中来使用呢? 接下来我们还是以之前自定义的来演示如图:我们在Prometheus中已经可以看到这个之前我们自定义的类型了 关于Gr ...

随机推荐

  1. Git 版本控制原理

    git 工作原理图 如上图所示,有三个区域Working Directory.stage.master. 名词解释: 工作区(Working Directory) 在我们直接编辑文件(文件夹)的根目录 ...

  2. 深入分析C++虚函数表

    C++中的虚函数(Virtual Function)是用来实现动态多态性的,指的是当基类指针指向其派生类实例时,可以用基类指针调用派生类中的成员函数.如果基类指针指向不同的派生类,则它调用同一个函数就 ...

  3. [修改高通平台WIFI MAC 地址] & [adb over wifi]

    [修改高通平台WIFI MAC 地址]fccmd --helpfccmd startfccmd getwifimacfccmd setwifimac 74:AC:5F:F5:D7:40 [adb ov ...

  4. "啃下"插入排序

    插入排序法基本原理 插入排序法较冒泡排序法和选择排序法更贴近生活,应该来说理解起来更快.如果你现在能够得到一副麻将,请把里面的“一万”到“六万”拿出来,打乱顺序,再重新排好,就像打麻将开始那样.是否需 ...

  5. [luogu2513 HAOI2009] 逆序对数列 (计数dp)

    题目描述 对于一个数列{ai},如果有iaj,那么我们称ai与aj为一对逆序对数.若对于任意一个由1~n自然数组成的数列,可以很容易求出有多少个逆序对数.那么逆序对数为k的这样自然数数列到底有多少个? ...

  6. 洛谷P5269 欧稳欧再次学车

    正常模拟就好~ 首先初始化:转速=l, 档位=1 然后读入数据 由于先要处理换挡操作,所以我们先按照x处理,再按照y处理 当x=0时,档位+1,转速=l 当x=1时,档位-1,转速=r 当y=1时,转 ...

  7. VUE:UI组件库(Mint UI & Elment)

    VUE:UI组件库 常用 1)Mini UI: a 主页:http://mint-ui.github.io/#!/zh-cn b 说明:饿了么开源的基于vue的移动端UI组件库 2)Elment a ...

  8. rpm方式在centos7中安装mysql

    .安装MySQL server 首先下载好mysql的rpm安装包 使用rpm命令安装: rpm -ivh MySQL-server--.glibc23.i386.rpm #rpm -ivh MySQ ...

  9. git与github的连接流程

    https://blog.csdn.net/sssssuuuuu666/article/details/78565381 https://www.cnblogs.com/wzd5230/p/49064 ...

  10. web前端-移动端响应式与自适应

    一. 在HTML的头部加入meta标签 在HTML的头部,也就是head标签中增加meta标签,告诉浏览器网页宽度等于设备屏幕宽度,且不进行缩放,代码如下: <meta name="v ...