一、使用场景
- 多交互、多数据源。
- 某个组件的状态,需要共享
- 某个状态需要在任何地方都可以拿到(比如登录后的账号)
- 一个组件需要改变全局状态
- 一个组件需要改变另一个组件的状态(比如购物车计算金额)
二、设计思想
- Web 应用是一个状态机,视图与状态是一一对应的。
- 所有的状态,保存在一个对象里面。
三、基本概念和 API
-
Store 就是保存数据的地方,你可以把它看成一个容器。整个应用只能有一个 Store, 提供createStore方法创建仓库保存数据,通过dispatch一个action改变数据,返回一个新的state,从而改变视图(改变的过程就是reducer)。
-
action 定义改变数据的方法
-
reducer 是一个纯函数,接受以后state和action作为参数,不直接改变数据,返回计算结果,这个计算结果就是store接受到action的后的新的state。
store的方法:
- store.getState() //获取具体时点的state数据
- store.dispatch() //派发action
- store.subcribe() //添加监听