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. Unity 动画系统(Mecanim) 术语及翻译 表格

    原文 翻译 Animation Clip 视频片段 Avatar 阿凡达 Retargeting 重定向 Rigging 绑定 skinning 蒙皮 Animator Component 动画组件 ...

  2. es6——map-set与对象对比

    {    //map,set,object对比    let item={t:1};    let map=new Map();    let set=new Set();    let obj={} ...

  3. IOS - JSON数据解析 小3种方法

    [manager GET:serverURL parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject ...

  4. vue路由传值params和query的区别

    vue路由传值params和query的区别1.query传参和接收参数传参: this.$router.push({ path:'/xxx' query:{ id:id } })接收参数: this ...

  5. 什么是PL/SQL,有什么用

    1.什么是PL/SQL,有什么用  Procedure Language+SQL  PL/SQL是Oracle数据库特有的编程语言.  PL/SQL程序是以SQL为基础,引入了  编程语言特点,例如变 ...

  6. Spring IoC容器实现

    1,Spring的两种IoC容器 BeanFactory 基础类型的IoC容器: 采用延迟初始化策略(容器初始化完成后并不会创建bean的对象,只有当收到初始化请求时才进行初始化): 由于延迟初始化, ...

  7. NYIST 677 碟战

    碟战时间限制:2000 ms | 内存限制:65535 KB难度:4 描述知己知彼,百战不殆!在战争中如果被敌人掌握了自己的机密,失败是必然的.K国在一场战争中屡屡失败,就想到自己的某些城市可能会有敌 ...

  8. node 命令行输入控件 prompt.js

        function print(){ console.log.apply(console , arguments) } var step ,_lstStp ,_onConfirmInput ,_ ...

  9. RT-Thread开篇

    一直以来对操作系统都有一种既仰慕又畏惧的情感.一方面被操作系统的强大深深吸引.还有一方面又被操作系统的复杂性感到畏惧. 记得在学校的时候也学过一些操作系统的理论知识,但也只限于理论,更似人云亦云. 本 ...

  10. pandaboard安装ubuntu

    参照:https://wiki.ubuntu.com/ARM/OmapDesktopInstall 主要是在linux下安装,主要命令为: zcat ./ubuntu-12.04-preinstall ...