Visual LabINTERACTIVE LEARNING
框架原理第 3 / 7 章

Redux 状态管理

建立 Store、Action、Reducer 与单向数据流的基础模型。

React组件Redux
进阶预计 58 分钟查看源文 ↗

Redux

3个核心概念

提示

  • Store 存储state,和reducer
  • Action 被派发出去的更新,是一个包含了action type的对象,派发到reducer函数中去处理逻辑
  • Reducer 用于合并action和state,是一个纯函数,每次返回一个新的state,在函数中去处理每一个类型的action的具体逻辑 把action的类型抽取到常量中,确保reducer和action对应的type一致,实际上type也仅仅是一个标识作用

Redux flow

redux使用流程

//1. 创建store
// store/index.js
import { createStore } from "redux";
import reducer from "./reducer";

export const store = createStore(
    reducer
)
//2. 创建reducer
// store/reducer.js
import * as actionTypes from './constant'
const initState = {
    count: 1
}

export default reducer = (state = initState, action) => {

    switch (action.type) {
        case actionTypes.ADD_NUMBER:
            return { ...state, count: state.count + 1 }
        case actionTypes.SUB_NUMBER:
            return { ...state, count: state.count - 1 }
        default:
            return state
    }
}
// 3. 创建action函数,本质上是为了方便的创建action,直接使用对一个action对象也可以
// store/actionCreator.js
import * as actionTypes from './constant'

export const addNumberAction = (count)=>({
    type:actionTypes.ADD_NUMBER,
    count, 
})
export const subNumberAction = (count)=>({
    type:actionTypes.SUB_NUMBER,
    count, 
})
// 4.抽取常量
// store/constant.js
export const ADD_NUMBER = 'add_num'
export const SUB_NUMBER = 'sub_num' 
//5. 业务使用
// 在组件中,派发action
import {addNumberAction } from './store/actionCreator'
import store from './store'

store.dispatch(addNumberAction(2))