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;

相关推荐
t_hj13 分钟前
Ajax案例
前端·javascript·ajax
bigHead-35 分钟前
9. 从《蜀道难》学CSS基础:三种选择器的实战解析
前端·css
阿里小阿希1 小时前
解决 pnpm dev 运行报错的坎坷历程
前端·node.js
未脱发程序员1 小时前
分享一款开源的图片去重软件 ImageContrastTools,基于Electron和hash算法
前端·javascript·electron
geovindu2 小时前
vue3: pdf.js 2.16.105 using typescript
javascript·vue.js·typescript·pdf
视频砖家2 小时前
Web前端VSCode如何解决打开html页面中文乱码的问题(方法2)
前端·vscode·vscode乱码·vscode中文乱码·vscode中文编码
2401_837088502 小时前
CSS transition过渡属性
前端·css
我爱吃朱肉2 小时前
深入理解 CSS Flex 布局:代码实例解析
前端·css
喝养乐多长不高2 小时前
Spring Web MVC基础理论和使用
java·前端·后端·spring·mvc·springmvc
zh73144 小时前
支付宝沙盒模式商家转账经常出现 响应异常: 解包错误
前端·阿里云·php