当前位置: 首页 > java >正文

React-useReducer-useMemo

useReducer

作用:和useState的作用类似,用来管理相对复杂的状态数据

useReducer基础用法

案例
import { useReducer } from 'react';
//定义reducer函数根据不同action 返回不同状态
const reducer = (state,action)=>{switch (action.type) {case 'add':return state +1case 'minus':return state - 1default:return 100}
}const New = () => {
const [state,dispatch] = useReducer(reducer,0)return (<div><button onClick={()=>dispatch({type:'minus'})}>minus</button>{state}<button onClick={()=>dispatch({type:'add'})}>add</button><button onClick={()=>dispatch({type:'one'})}>one</button></div>)
};
export default New;
 useReducer 传参

 传参案例
import { useReducer } from 'react';
//定义reducer函数根据不同action 返回不同状态
const reducer = (state,action)=>{switch (action.type) {case 'add':return state +1case 'minus':return state - 1case 'params':return action.payloaddefault:return 100}
}const New = () => {
const [state,dispatch] = useReducer(reducer,0)return (<div><button onClick={()=>dispatch({type:'minus'})}>minus</button>{state}<button onClick={()=>dispatch({type:'add'})}>add</button><button onClick={()=>dispatch({type:'one'})}>one</button>{/* 传参 */}<button onClick={()=>dispatch({type:'params',payload:20})}>params</button></div>)
};
export default New;

 useMemo

作用:useMemo 是一个 React Hook,它在每次重新渲染的时候能够缓存计算的结果。

useMemo基础语法   消耗非常大计算才会使用

 案例
import { useMemo,useState } from "react";
const Month = () => {const [count1,setCount1] = useState(0)const [count2,setCount2] = useState(0)const sum = (num)=>{if(num<3){return 1}return sum(num-2)+sum(num-1)}const sun2 = useMemo(()=>{//返回计算的结果return sum(count1)},[count1]) //只有count1发是变化才会执行return (<div><button onClick={()=>setCount1(count1+1)}>change count1 {count1}</button><button onClick={()=>setCount2(count2+1)}>change count2 {count2}</button>{sun2}</div>)
};
export default Month;

http://www.xdnf.cn/news/14871.html

相关文章:

  • LabVIEW与FPGA超声探伤
  • 软考(软件设计师)存储管理—虚拟存储器管理,页面置换算法
  • Docker 稳定运行与存储优化全攻略(含可视化指南)
  • verilog中timescale指令的使用
  • Web Worker:让前端飞起来的隐形引擎
  • 物联网技术的关键技术与区块链发展趋势的深度融合分析
  • (倍增)洛谷 P1613 跑路/P4155 国旗计划
  • 嵌入式数据库sqlite测试程序
  • 深度学习篇---深度学习常见的应用场景
  • 铸造软件交付的“自动驾驶”系统——AI大模型如何引爆DevOps革命
  • 锁和事务的关系
  • ipmitool 使用简介(ipmitool sel list ipmitool sensor list)
  • 大数据Hadoop之——Flink1.17.0安装与使用(非常详细)
  • 网安系列【8】之暴力破解入门
  • Python设计小游戏方法简介
  • 【PyTorch】PyTorch中torch.nn模块的池化层
  • 爬虫-request模块使用
  • Java 中 Comparable 和 Comparator 的区别
  • 数据运营策略 —— B-O价值模型
  • STM内部通信、I2C、USART、
  • 二十九、windows系统安全---windows注册表安全配置
  • LNMP搭建discuz论坛
  • 力扣 hot100 Day36
  • 系统架构设计师论文分享-论软件体系结构的演化
  • C++ 模板宏相关
  • 力扣网编程45题:跳跃游戏II之正向查找方法(中等)
  • 容声W60以光水离子科技实现食材“主动养鲜”
  • 爬虫-协议基础
  • XHTML 简介
  • 使用LIMIT + OFFSET 分页时,数据重复的风险