redux是什么
Redux是Dan Abramov在2015年发布,是适用于React状态管理库。主要特性有:
- 可预测
- 中心化:全局只有一个store。
- 易调试
- 灵活
redux中的工作流:
基本概念
-
store:保存数据state的地方,可以把它看成是数据源对数据进行统一管理,是一个容器,整个应用中只能有一个store。所有组件均可通过redux规范与store中的数据进行交互。
-
action:改变State的唯一方式,他有一定 格式规范。action 内必须使用一个字符串类型的 type 字段来表示将要执行的动作(规定action对象里面必须有type字段,否则代码将报错)。
const action = {
type: 'xxx',
payload: 'yyy'
};
-
state:某个时刻Store数据的快照。
-
dispatch:View层发出Action的唯一方式。
state和dispatch是组件属性中的读、写api,读使用state,写使用dispatch。可以通过传selector和MapDispatchToProps来更精确地实现读写。
-
reducer:是一个纯函数,他接受
action和当前state为参数,根据action中的type来改变相应的store内的state,返回一个全新的state。 -
store.subscribe:订阅数据变化。一旦state发生改变,执行回调。 可以在这里实现自动渲染。
-
initState 初始的
state。 -
connect
react-redux提供的一个高阶组件,作用是将组件和state连接起来。是一个封装读和写的高阶组件。
中间件middleware
一个midware就是一个函数,它会去修改dispatch。
在createStore中传入第三个参数,即为中间件。applyMiddleware(reduxThunk,reduxPromise)**
- redux-thunk:改写
dispatch方法,如果action是一个函数,就调用它。否则就传给下一个中间件。 - redux-promise:改写
dispatch方法,如果action.payload的类型是promise对象,就在其后加入then方法。
Redux的设计思想
- 应用是一个状态机,视图和状态是一一对应的。
- 把所有的State都集中管理,让整个UI和整个状态都能有对应的管理。