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 小时前
老梁聊全栈系列:Vue3核心与组合式API深度解析
javascript·vue.js·ecmascript
想吃火锅100510 小时前
【leetcode】405.数字转换为十六进制数js
开发语言·javascript·ecmascript
原则猫12 小时前
HOOKS 背后机制
前端
码语智行12 小时前
首页导航跳转功能深度解析-系统内和系统外
前端
阿猫的故乡12 小时前
Vue过渡动画从入门到装X:淡入淡出、滑动、列表动画、第三方库全搞定
前端·javascript·vue.js
IManiy13 小时前
总结之Vibe Coding前端骨架
前端
小和尚敲木头13 小时前
vue3 vite动态拼接图片路径
javascript
JS菌13 小时前
AI Agent 沙箱双层防护体系:从权限过滤到内核隔离的完整实现
前端·人工智能·后端
Aphasia31113 小时前
从输入URL到页面展示全流程
前端·面试
我叫黑大帅13 小时前
前端如何竖屏固定视口背景
前端·javascript·面试