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;

相关推荐
Lear9 分钟前
UniApp PDF文件下载与预览功能完整实现指南
前端
Heo12 分钟前
关于XSS和CSRF,面试官更喜欢这样的回答!
前端·javascript·面试
7***A44334 分钟前
Vue自然语言处理应用
前端·vue.js·自然语言处理
徐小夕1 小时前
耗时一周,我把可视化+零代码+AI融入到了CRM系统,使用体验超酷!
javascript·vue.js·github
高阳言编程1 小时前
vue2 + node + express + MySQL 5.7 的购物系统
前端
5***a9751 小时前
React Native性能优化技巧
javascript·react native·react.js
y***54881 小时前
React依赖
前端·react.js·前端框架
2***B4491 小时前
React测试
前端·react.js·前端框架
A3608_(韦煜粮)1 小时前
深入理解React Hooks设计哲学与实现原理:从闭包陷阱到并发模式
javascript·性能优化·react·前端开发·react hooks·并发模式·自定义hooks
5***o5001 小时前
React自动化测试
前端·react.js·前端框架