redux 是一个独立专门用于做状态管理的 JS 库(不是 react 插件库),它可以用在 react, angular, vue 等项目中, 但基本与 react 配合使用。
作用: 集中式管理 react 应用中多个组件共享的状态
redux主要由三部分组成:store,reducer,action。
1.store对象:将 state,action 与 reducer 联系在一起的对象
import {createStore} from 'redux'
import reducer from './reducer'
const store = createStore(reducer)
store对象扩展功能
getState(): 得到 state
dispatch(action): 分发 action, 触发 reducer 调用, 产生新的 state
subscribe(listener): 注册监听, 当产生了新的 state 时, 自动调用
2.action:标识要执行行为的对象
action是一个对象,其中type属性是必须的,同时可以传入一些数据。action可以用actionCreactor进行创造。dispatch就是把action对象发送出去。
属性:
type:标识属性, 值为字符串, 唯一, 必要属性
xxx: 数据属性, 值类型任意, 可选属性
使用: const action = { type: ‘INCREMENT’, data: 2 }
3.reducer:返回一个新的状态
reducer是一个函数,它接受一个state和一个action,根据action的type返回一个新的state。根据业务逻辑可以分为很多个reducer,然后通过combineReducers将它们合并,state树中有很多对象,每个state对象对应一个reducer,state对象的名字可以在合并时定义。
export default function counter(state = 0, action) {
switch (action.type) {
case 'INCREMENT':
return state + action.data
case 'DECREMENT':
return state - action.data
default: return state
} }