react 之 UseReducer

UseReducer作用: 让 React 管理多个相对关联的状态数据

在这里插入图片描述
在这里插入图片描述

import { useReducer } from 'react'

// 1. 定义reducer函数,根据不同的action返回不同的新状态
function reducer(state, action) {
  switch (action.type) {
    case 'INC':
      return state + 1
    case 'DEC':
      return state - 1
    default:
      return state
  }
}

function App() {
  // 2. 使用useReducer分派action
  const [state, dispatch] = useReducer(reducer, 0)
  return (
    <>
      {/* 3. 调用dispatch函数传入action对象 触发reducer函数,分派action操作,使用新状态更新视图 */}
      <button onClick={() => dispatch({ type: 'DEC' })}>-</button>
      {state}
      <button onClick={() => dispatch({ type: 'INC' })}>+</button>
    </>
  )
}

export default App

更新流程

分派action传参

做法:分派action时如果想要传递参数,需要在action对象中添加一个payload参数,放置状态参数

// 定义reducer

import { useReducer } from 'react'

// 1. 根据不同的action返回不同的新状态
function reducer(state, action) {
  console.log('reducer执行了')
  switch (action.type) {
    case 'INC':
      return state + 1
    case 'DEC':
      return state - 1
    case 'UPDATE':
      return state + action.payload
    default:
      return state
  }
}

function App() {
  // 2. 使用useReducer分派action
  const [state, dispatch] = useReducer(reducer, 0)
  return (
    <>
      {/* 3. 调用dispatch函数传入action对象 触发reducer函数,分派action操作,使用新状态更新视图 */}
      <button onClick={() => dispatch({ type: 'DEC' })}>-</button>
      {state}
      <button onClick={() => dispatch({ type: 'INC' })}>+</button>
      <button onClick={() => dispatch({ type: 'UPDATE', payload: 100 })}>
        update to 100
      </button>
    </>
  )
}

export default App

在这里插入图片描述

相关推荐

  1. react hook: useReducer

    2024-02-03 01:08:01       21 阅读
  2. React-hooks:useReducer

    2024-02-03 01:08:01       15 阅读
  3. react学习-useReducer

    2024-02-03 01:08:01       11 阅读
  4. ReactuseReducer的使用

    2024-02-03 01:08:01       18 阅读
  5. reactuseReducer如何使用

    2024-02-03 01:08:01       17 阅读
  6. React@16.x(25)useReducer

    2024-02-03 01:08:01       12 阅读
  7. React】在 react 应用中,怎么使用useReducer

    2024-02-03 01:08:01       9 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-03 01:08:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-03 01:08:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-03 01:08:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-03 01:08:01       20 阅读

热门阅读

  1. Hook 技术 相关的博客链接(还有一些其他的)

    2024-02-03 01:08:01       40 阅读
  2. 组播目的地址

    2024-02-03 01:08:01       33 阅读
  3. 公司就一个后端一个前端,有必要搞微服务吗?

    2024-02-03 01:08:01       32 阅读
  4. MYSQL学习笔记1

    2024-02-03 01:08:01       35 阅读
  5. Excel计算表达式的值

    2024-02-03 01:08:01       39 阅读
  6. HTTP无状态协议和服务器端状态管理

    2024-02-03 01:08:01       29 阅读