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

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.xdnf.cn/news/19312.html

相关文章:

  • [强网杯2019]随便注-----堆叠注入,预编译
  • centos7挂载iscis存储操作记录
  • postman 用于接口测试,举例
  • postman带Token测试接口
  • DAY50打卡
  • Redis 持久化 AOF 与 RDB 的区别
  • Ruoyi-vue-plus-5.x第二篇MyBatis-Plus数据持久层技术:2.1 MyBatis-Plus核心功能
  • audioLDM模型代码阅读(五)—— pipeline
  • Python学习大集合:基础与进阶、项目实践、系统与工具、Web 开发、测试与运维、人工智能(视频教程)
  • 电力电子技术知识学习-----晶闸管
  • VSCode中使用Markdown
  • 从零开始学炒股
  • cordova+umi 创建项目android APP
  • PythonDay42
  • KNN算法常见面试题
  • C数据结构:排序
  • 第25章学习笔记|额外的提示、技巧与技术(PowerShell 实战版)
  • Qt Core 之 QString
  • PyTorch 张量(Tensor)详解:从基础到实战
  • 【深度学习】配分函数:近似最大似然与替代准则
  • python复杂代码如何让ide自动推导提示内容
  • 编写Linux下usb设备驱动方法:disconnect函数中要完成的任务
  • More Effective C++ 条款20:协助完成返回值优化(Facilitate the Return Value Optimization)
  • 每日算法题【栈和队列】:栈和队列的实现、有效的括号、设计循环队列
  • [软考中级]嵌入式系统设计师—考核内容分析
  • Redis持久化之AOF(Append Only File)
  • Java基础知识(十二)
  • 8.31【Q】CXL-DMSim:
  • vue3+vite+ts 发布npm 组件包
  • Deep Think with Confidence:llm如何进行高效率COT推理优化