【React】useReducer

让 React 管理多个相对关联的状态数据

js 复制代码
import { useReducer } from "react"
// 1. 定义reducer函数,根据不同的action返回不同的状态
function reducer(state, action) {
  switch (action.type) {
    case 'ADD':
      return state + action.payload
    case 'SUB':
      return state - 1
    default:
      return state
  }
}

function App() {
  // 2. 组件中调用 useReducer, 0 是初始化参数
  const [state, dispatch] = useReducer(reducer, 0)
  return (
    <div className="App">
      {state}
      {/* 3. 调用dispatch 产生一个新的状态,匹配事件(可传参) 更新 UI */}
      <button onClick={() => { dispatch({ type: 'ADD', payload:100 }) }}>+</button>
      <button onClick={() => { dispatch({ type: 'SUB' }) }}>-</button>
    </div>
  )
}

export default App;
相关推荐
小赖同学啊1 分钟前
出现 Uncaught ReferenceError: process is not defined 错误
前端
热爱生活的猴子19 分钟前
补充Depends 和 request: Request 依赖注入用法的注意事项
前端·fastapi
开发者小天24 分钟前
React中使用 Ant Design Charts 图表
前端·javascript·react.js
shenyan~1 小时前
关于 Web 漏洞原理与利用:2. XSS(跨站脚本攻击)
前端·xss
雪山上的小灰熊1 小时前
如何使用Antv X6使用拖拽布局?
开发语言·前端·javascript
爱吃小白兔的猫1 小时前
从零开始创建React项目及制作页面
前端·react.js·前端框架
steven~~~2 小时前
elementui初学1
前端·javascript·elementui
幽冥雪羽2 小时前
vue3中RouterView配合KeepAlive实现组件缓存
前端·vue.js·缓存
Clownseven5 小时前
[Web服务器对决] Nginx vs. Apache vs. LiteSpeed:2025年性能、功能与适用场景深度对比
服务器·前端·nginx
TE-茶叶蛋6 小时前
React的合成事件(SyntheticEventt)
前端·javascript·react.js