banner
banner
banner
NEWS LETTER

React-状态管理useState 与 reducer

Scroll down

useState分散逻辑 vs reducer 聚合逻辑

useState

React 的一个Hook,再函数组件中管理组件的状态,并在状态更新时,重新渲染组件

  • 缺点: 当有多个状态时,需要写多个,维护困难

reducer

  • 先定义好reducer,就是把要操作的行为定义好,之后使用useReducer
  • 示例
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    const reducer = (state,action) => {
    switch(state, type) { // 这里拿到state
    case 'Add': // 对state进行添加操作
    const id = state.length +1
    return [...state, {id:id, title: action.payload, show: false}]
    case 'Delete':
    return state.filter(task => task.id !== action.payload)
    default:
    return state
    }
    }
  • 使用useReducer来调用reducer的操作和初始化state
  • 示例:
    1
    2
    3
    4
    const [state, dispatch] = useReducer(reducer, [
    {id:1, title:"第一条",show: false},
    {id:2, title:"第二条",show: false},
    ])
  • 使用和调取方法
    • state 就是数据,也是usestate里的值,dispatch就相当于setState
    • 调用方法:dispatch({type:’Delete’, payload: id}) // type传要执行的操作,payload传在该事件中要改变什么,在reducer中要定义
  • 如果有生成初始值的函数,为避免性能浪费,可以把函数也一起传进useReducer
    1
    2
    // 如果createState不能计算除初始值,需要定义一个默认,如果可以直接传null
    const [state, dispatch] = useReducer(reducer, null ,createInitState)
其他文章
cover
threeJS-3D官网步骤
  • 24/11/01
  • 11:01
  • ThreeJS
目录导航 置顶
  1. 1. useState
  2. 2. reducer
请输入关键词进行搜索