React基础之useReducer

useState适用于管理简单的状态逻辑,如单个状态值或少量不相关的值,useReducer适合管理复杂的状态逻辑

1.定义不懂的reducer函数,根据不同的action,返回不同的状态

2.组件中调用useReducer(reducer,0)=>state,dispatch

3.调用dispatch({type:'INC'}),同时reducer产生一个新的状态,使用这个新状态更新UI

import { useReducer } from "react";

function reduce(state,action){

switch(action.type){

case 'INC':

return state+1

case 'DEC':

return state-1

default:

return state

}

}

function App() {

const state,dispatch =useReducer(reduce,0)

return (

<div className="App">

this is app,{state}

<button onClick={()=>{dispatch({type:'INC'})}}>++</button>

<button onClick={()=>{dispatch({type:'DEC'})}}>--</button>

</div>

);

}

export default App;

如果我们需要action传参

只需要添加一个新的分支,并且使用payload指定参数即可

import { useReducer } from "react";

function reduce(state,action){

switch(action.type){

case 'SET':

return action.payload

default:

return state

}

}

function App() {

const state,dispatch =useReducer(reduce,0)

return (

<div className="App">

this is app,{state}

<button onClick={()=>{dispatch({type:'SET',payload:100})}}>更新</button>

</div>

);

}

export default App;

相关推荐
陈随易2 小时前
Postman 被曝自动往 Claude Code 和 Codex 装插件
前端·后端·程序员
Dream-Y.ocean4 小时前
鸿蒙PC平台宅匠 3D 室内设计适配实战:基于 Electron 壳方案的 Three.js 双渲染引擎与参数化户型编辑器开发
javascript·3d·harmonyos
Csvn5 小时前
性能监控
前端
Highcharts.js5 小时前
Highcharts Gantt使用符号的自定义数据标签开发甘特图示例
javascript·甘特图·highcharts·图表开发·实战代码·响应式图表
Csvn5 小时前
构建工具
前端
FRing036 小时前
vue2干货总结3(computed计算属性、watch监听器)
开发语言·前端·vue.js·vue2
JavaPub-rodert7 小时前
从零搭建通用管理后台:ShiyuAdmin 的 Go、React 与 RBAC 实践
开发语言·react.js·golang
kyriewen8 小时前
Skills 榜前 10 我全装了:只有 3 个能直接用
前端·javascript·程序员
IT_陈寒8 小时前
当Java的hashCode遇上Lombok,我的缓存被全清了
前端·人工智能·后端
工控丫丫9 小时前
帆软看板中经常使用的公式函数及经常搭的组合
前端·javascript·数据库