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

Hooks useState的使用

import React, { useState } from 'react'
import { View, Text, Button, Input } from '@tarojs/components'
import './index.scss' // Import Taro's style filetype Box = {num?: number | string;width?: number | string;height?: number | string;color?: string;cate?: string;material?: string;
};type Record = {time?: string,addNum?: number
}const UseStateComponent = () => {// 数值类型const [tNum, setTNum] = useState(0);// String类型const [tname, setName] = useState('start firstName');// 对象类型const [box, setBox] = useState<Box>({num: 20,width: 100,height: 150,color: 'blue'});// 数组类型const [records, setRecord] = useState<Record[]>([]);// 增加箱子数量const increaseBox = () => {setTNum(prevNum => {const newNum = prevNum + 1;setBox(prevBox => ({...prevBox,num: newNum}));return newNum;});addNewRecord()};// 减少箱子数量const decreaseBox = () => {setTNum(prevNum => {const newNum = prevNum > 0 ? prevNum - 1 : 0;setBox(prevBox => ({...prevBox,num: newNum}));return newNum;});};// 点击一次连续减少箱子的数量const moreDecreaseBox = ()=>{//在这里多次调用箱子的数量减一// decreaseBox();// decreaseBox();// decreaseBox();// decreaseBox();// decreaseBox();// decreaseBox();// // 打印连续减少后箱子的数量// console.log("连续减少后箱子的数量:box num = ", tNum);setTNum(preTNum => preTNum - 1);setTNum(preTNum => preTNum - 1);setTNum(preTNum => preTNum - 1);setTNum(preTNum => preTNum - 1);setTNum(preTNum => preTNum - 1);setTNum(preTNum => preTNum - 1);setTNum(preTNum => preTNum - 1);console.log("连续减少后箱子的数量:box num = ", tNum);}const newBoxSendToPreBox = () => {const oneBox: Box = {cate: tNum + "sci type",material: tNum + "raw material",width: Number(tNum) + 10,height: Number(tNum) + 20};setBox(prevBox => ({...prevBox,...oneBox}));}// 处理输入框变化const handleNameChange = (e) => {setName(e.detail.value);};// 处理数组类型,向数组中加入新的元素const addNewRecord = () => {// 在处理数组的元素时,要使用Array中返回新的数组的API// 比如:concat、filter、slice、map、新建一个数组再进行reverse和sort// 不要使用:push、unshift、pop、shift、splice、reverse和sortconst newRecord: Record = {time: new Date().toISOString(),addNum: 1};setRecord([...records, newRecord]);};return (<View className='container'><Text className='txt'>Box的数量 = {tNum}</Text><Text className='txt'>Box的制造商名称 = {tname}</Text><Text className='txt'>Box的宽度 = {box.width}, Box的高度 = {box.height}, color颜色 = {box.color}</Text><Text className='txt'>箱子对象 = {JSON.stringify(box)}</Text><Text className='txt'>箱子数量增加的记录 = {JSON.stringify(records)}</Text><Button className='btn' onClick={increaseBox}>箱子的数量加一</Button><Button  className='btn' onClick={decreaseBox}>箱子的数量减一</Button><Button  className='btn' onClick={moreDecreaseBox}>点击一次,连续减少箱子的数量</Button><Button  className='btn' onClick={newBoxSendToPreBox}>箱子对象的合并</Button><Inputvalue={tname}onInput={handleNameChange}placeholder='请输入制造商名称'className='input'/></View>);
}export default UseStateComponent;
.container {display: flex;flex-direction: column;padding: 20px;background-color: #ADD8E6;margin-bottom: 40px;
}.txt {padding: 35px 100px;margin-bottom: 7px;background-color: #FFE4E1;font-size: 18px;
}.btn {padding: 35px 100px;margin-bottom: 7px;background-color: #D8BFD8;font-size: 18px;
}.buttonContainer {display: flex;flex-direction: row;justify-content: space-around;margin-bottom: 20px;
}.input {background-color: white;padding: 10px;border: 1px solid #ccc;border-radius: 5px;
}

开发环境为Taro+React Native,第一段代码为tsx文件 

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

相关文章:

  • leetcode热题100——day33
  • 视频内容提取与AI总结:提升学习效率的实用方法
  • 【深度学习新浪潮】近三年图像处理领域无监督学习的研究进展一览
  • 科目二的四个电路
  • 《Vuejs设计与实现》第 14 章(内建组件和模块)
  • 概率dp|math
  • Android中切换语言的方法
  • 基于Netty的高并发WebSocket连接管理与性能优化实践指南
  • ReactNode 类型
  • 第12章《学以致用》—PowerShell 自学闭环与实战笔记
  • “让机器人更智慧 让具身体更智能”北京世界机器人大会行业洞察
  • Python 调试工具的高级用法
  • OJ目录饿
  • Python 基础语法(二)
  • Kubernetes存储迁移实战:从NFS到阿里云NAS完整指南
  • 【踩坑笔记】50系显卡适配的 PyTorch 安装
  • XF 306-2025 阻燃耐火电线电缆检测
  • JavaScript 性能优化实战:从评估到落地的全链路指南
  • Docker Compose 安装 Neo4j 的详细步骤
  • 福彩双色球第2025094期号码分析
  • Jenkins - CICD 注入环境变量避免明文密码暴露
  • 用MTEB对Embedding模型进行benchmark
  • Pell数列
  • 基本的设计原则
  • SONiC (4) - redis的介绍以及应用
  • 远程协作绘图:借助 cpolar 内网穿透服务访问 Excalidraw
  • 用PaddleDetection套件训练自己的数据集,PP-YOLO-SOD训练全流程
  • 领域快速入门过程记录之--电力网络
  • ROS常用命令手册
  • # C++ 中的 `string_view` 和 `span`:现代安全视图指南