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

React Hooks useMemo

    React Native+Taro+TypeScript的开发环境,useMemo的一些简单的使用

import React, { useState, useMemo } from "react";
import { View, Text, Input, Button } from "@tarojs/components";
import './index.scss';const expensiveCalculation = (num: number):number => {console.log('Calculating...')for (let index = 0; index < 1000000000; index++) {num += 1}return num
}// 用户数据类型
interface User {id: numbername: stringage: number
}
const UseMemoExample:React.FC = ()=> {const [count, setCount] = useState<number>(0);const [users, setUsers] = useState<User[]>([{id:1, name:'Alice', age: 25},{id:2, name:'Bob', age: 30},{id:3, name:'Charlie', age:35},]);const [searchTerm, setSearchTerm] = useState<string>('');// 使用 useMemo 缓存昂贵的计算结果const calculatedValue = useMemo<number>(()=>{return expensiveCalculation(count)}, [count])// 使用 useMemo 过滤用户列表,避免每次渲染都重新计算const filteredUsers = useMemo<User[]>(()=>{console.log('Filtering users...')return users.filter(user=>user.name.toLowerCase().includes(searchTerm.toLowerCase()))}, [users, searchTerm])// 使用 useMemo 缓存组件,避免不必要的重新渲染const userList = useMemo(()=>{return filteredUsers.map(user=>(<View key={user.id} className='txt'><Text>{user.name} - {user.age} years old</Text></View>), [filteredUsers])})const addUser = () => {const newId = users.length + 1setUsers([...users, {id: newId,name: `User ${newId}`,age: Math.floor(Math.random() * 30) + 20}])}return (<View className='container'><Text className='txt'>useMemo Example</Text><View className='container'><Text className='txt'>Expensive Calculation</Text><Text className='txt'>Count: {count}</Text><Text className='txt'>Calculated Value: {calculatedValue}</Text><Button className='btn' onClick={()=>setCount(count + 1)}>Increment</Button></View><View className='container'><Text className='txt'>User Search</Text><Inputstyle={{width: 320,height: 74,backgroundColor: 'darkkhaki',marginBottom: 30}}type='text'value={searchTerm}onInput={(e)=>setSearchTerm(e.detail.value)}placeholder='Search users...'/><Text className='txt'>Filter Users:</Text>{userList}<Button className='btn' onClick={addUser}>Add Random User</Button></View></View>)
}export default UseMemoExample

http://www.dtcms.com/a/359987.html

相关文章:

  • JVM学习总结
  • docker中的命令(四)
  • 大话 IOT 技术(3) -- MQTT篇
  • 机器视觉学习-day19-图像亮度变换
  • 【模型训练篇】VeRL分布式基础 - 框架Ray
  • 分布式相关
  • 正则表达式 Python re 库完整教程
  • 如何用熵正则化控制注意力分数的分布
  • 让你的App与众不同打造独特品牌展示平台
  • Scikit-learn Python机器学习 - 类别特征提取- OneHotEncoder
  • 编写Linux下usb设备驱动方法:disconnect函数中要完成的任务
  • 【数学建模学习笔记】异常值处理
  • RAG(检索增强生成)技术的核心原理与实现细节
  • 【Unity开发】Unity核心学习(三)
  • macos自动安装emsdk4.0.13脚本
  • 在Ubuntu系统上安装和配置JMeter和Ant进行性能测试
  • 基于SpringBoot + Vue 的宠物领养管理系统
  • 【Spring Cloud微服务】7.拆解分布式事务与CAP理论:从理论到实践,打造数据一致性堡垒
  • ANR InputDispatching TimeOut超时判断 - android-15.0.0_r23
  • 拆分TypeScript项目的学习收获:处理编译缓存和包缓存,引用本地项目,使用相对路径
  • 配置 Kubernetes Master 节点不可调度的标准方法
  • 【51单片机】【protues仿真】基于51单片机音乐喷泉系统
  • 记录测试环境hertzbeat压测cpu高,oom问题排查。jvm,mat,visulavm
  • opencv 梯度提取
  • [Android] UI进阶笔记:从 Toolbar 到可折叠标题栏的完整实战
  • 掩码语言模型(Masked Language Model, MLM)
  • android-studio 安装
  • 基于计算机视觉的海底图像增强系统:技术详述与实现
  • 如何正确校正电脑时间?
  • 【开源】AI模型接口管理与分发系统开源项目推荐