一、使用redux 的条件:

1、某个组件的状态,需要共享;

2、某个状态需要在任何地方都可以拿到;

3、一个组件需要改变全局状态;

4、一个组件需要改变另一个组件的状态。

redux   说明白点,其实就是一种机制,可以在同一个地方查询状态、改变状态、传播状态的变化。

二、redux 中的store

store  可以认为是一个保存数据的地方,可以看成一个容器。

通过createStore  来生成store;

通过store.getState() 拿到数据;

三、redux 中Action

View 通过Action 来改变state,它会运送数据到store。Action  是一个对象,其中type  属性是必须的,表示Action的名称。

四、redux 中的dispatch()

store.dispatch ()是View 发出Action 的唯一方法。

五、reducer

store 收到Action 以后,必须给出一个新的state,这样View 才会发生变化。这种state的计算过程就叫做reducer。

reducer 是一个纯函数,它接受Action 和当前state作为参数,返回一个新的state。

const reducer = function (state, action) {
// ...
return new_state;
};

实际中的运用:

import { createStore } from 'redux';
const store = createStore(reducer);

  上面代码中,createStore  接受Reducer  作为参数,生成一个新的Store。以后每当store.dispatch 发送过来一个新的Action,就会自动调用reducer,得到新的state。

六、reducer  纯函数

纯函数的一个特性就是:只要是同样的输入,必定得到同样的输出。

纯函数是函数式编程的概念,必须遵守以下的一些约束:

1、不得改写参数;
2、不能调用系统I/O的API;
3、不能调用Date.now 或者Math.random ()等不纯的方法,因为每次会得到不一样的结果

reducer 函数里面不能改变state,必须返回一个全新的对象。

最新文章

  1. java中文乱码解决之道(七)-----JSP页面编码过程
  2. [引] Security tips for web developers
  3. ArrayList用法
  4. SSL简介
  5. LeetCode题解——Two Sum
  6. Magento 头部的演示信息去除
  7. 【Android - 基础】之Animator属性动画
  8. oracle 双机热备,oracle dataguard 和oracle rac的区别和联系(转)
  9. Fragment之三:根据屏幕尺寸加载不同的Fragment
  10. GlusterFS常用命令
  11. JAVA - 深入JAVA 虚拟机 1
  12. [Swift]LeetCode799. 香槟塔 | Champagne Tower
  13. Summary on deep learning framework --- Torch7
  14. openwrt package 依赖关系
  15. 史上最详细的JavaScript事件使用指南
  16. 用lua扩展你的Nginx(整理)-----openresty
  17. iOS 动画效果:Core Animation & Facebook's pop
  18. [Perl] 删除数组中重复元素
  19. 如何在python3.5环境下安装BeautifulSoup?
  20. 罗佳琪的第三次预备作业——虚拟机的安装及Linux的初步学习

热门文章

  1. 【SPOJ220】Relevant Phrases of Annihilation(后缀数组,二分)
  2. 【HDOJ6351】Beautiful Now(贪心,搜索)
  3. Oracle常用操作【自己的练习】
  4. Oracle命令行创建数据库
  5. Android 网络编程之HttpURLConnection运用
  6. docker镜像mac下保存路径
  7. 通过Nginx 的反向代理来加强kibana的访问安全
  8. BZOJ1016最小生成树计数 最小生成树 + 排列组合
  9. BIM
  10. 如何快速的开发一个完整的iOS直播app(美颜篇)