** 基本用法 **
1.使用redux的场景(多交互、多数据源)
- 1.用户的使用方式复杂
- 2.不同身份的用户有不同的使用方式
- 3.多个用户之间可以协作
- 4.与服务器大量交互,或者使用了WebSocket
- View要从多个来源获取数据
- 某个组件的状态需要共享
- 某个状态需要在任何地方都可以拿到
- 一个组件需要改变另一个组件的状态
2.store 保存数据的地方,看成容器 Redux 提供createStore这个函数,用来生成 Store createStore 函数接受另一个函数作为参数,返回新生成的 Store 对象
3.当前时刻的 State,可以通过store.getState()拿到 一个 State 对应一个 View。只要 State 相同,View 就相同
4.Action 就是 View 发出的通知,表示 State 应该要发生变化了。type属性是必须的,表示 Action 的名称。改变 State 的唯一办法,就是使用 Action。它会运送数据到 Store
5.store.dispatch()是 View 发出 Action 的唯一方法 会触发 Reducer 的自动执行
6.Reducer 是一个函数,它接受 Action 和当前 State 作为参数,返回一个新的 State 存储操作state的各种方法 通过传递进来的参数得知state和进行什么操作 是一个纯函数
7.纯函数是函数式编程的概念 - 不得改写参数
- 不能调用系统 I/O 的API
- 不能调用Date.now()或者Math.random()等不纯的方法,因为每次会得到不一样的结果
- Reducer 是纯函数,就可以保证同样的State,必定得到同样的 View
- Store 允许使用store.subscribe方法设置监听函数,一旦 State 发生变化,就自动执行这个函数 store.subscribe(listener);
- store.subscribe方法返回一个函数,调用这个函数就可以解除监听
- combineReducers()做的就是产生一个整体的 Reducer 函数。该函数根据 State 的 key 去执行相应的子 Reducer,并将返回结果合并成一个大的 State 对象。di
** 中间件与异步操作 ** - 中间件就是一个函数,对store.dispatch方法进行了改造,在发出 Action 和执行 Reducer 这两步之间,添加了其他功能
- applyMiddleware:Redux 的原生方法,作用是将所有中间件组成一个数组,依次执行
- 异步操作的思路 操作开始时,送出一个 Action,触发 State 更新为"正在操作"状态,View 重新渲染 操作结束后,再送出一个 Action,触发 State 更新为"操作结束"状态,View 再一次重新渲染
网友评论