react18【系列实用教程】useState (2024最新版)
类似 vue 的 data 选项
功能
向组件添加响应式变量,当响应式变量变化时,组件的视图UI也会跟着变化【数据驱动视图】
语法
- 参数为变量的初始值
- 返回值为一个只有两个元素的数组,第一项元素为传入的参数,第二项元素是一个setter 函数
使用范例 – 响应式变量
import { useState } from "react";
const Demo = () => {const [count, setCount] = useState(0);function addOne() {setCount(count + 1);}return <button onClick={addOne}>{count}</button>;
};export default Demo;
- 声明了响应式变量 count ,初始值为 0
- 通过 [] 进行了数组的解构赋值,将 0 赋值给了 count ,可响应式改变 count 值的 setter 函数赋值给了
- 通过 setCount 可修改 count 的值 (setCount 可以自定义为其他名称,如 updateCount , 但推荐统一 set 开头)
- setCount 的语法是将 count 的新值作为参数传入
- setCount 的作用是触发视图根据 count 的新值重新渲染
使用范例 – 响应式对象
const [person, setPerson] = useState({firstName: 'Barbara',lastName: 'Hepworth',email: 'bhepworth@sculpture.com'});function handleFirstNameChange(e) {// 修改属性值setPerson({...person,firstName: e.target.value});}
修改嵌套的属性值
const [person, setPerson] = useState({name: 'Niki de Saint Phalle',artwork: {title: 'Blue Nana',city: 'Hamburg',image: 'https://i.imgur.com/Sd1AgUOm.jpg',}});function handleNameChange(e) {setPerson({...person,name: e.target.value});}function handleTitleChange(e) {setPerson({...person,artwork: {...person.artwork,title: e.target.value}});}
显然,非常麻烦,可以用 Immer 库编写简洁的更新逻辑
npm install use-immer
import { useImmer } from 'use-immer';
const [person, updatePerson] = useImmer({name: 'Niki de Saint Phalle',artwork: {title: 'Blue Nana',city: 'Hamburg',image: 'https://i.imgur.com/Sd1AgUOm.jpg',}});function handleNameChange(e) {updatePerson(draft => {draft.name = e.target.value;});}function handleTitleChange(e) {updatePerson(draft => {draft.artwork.title = e.target.value;});}
使用范例 – 响应式数组
const [fruitList, setFruitList] = useState([]);function changeHandler(e) {let newValue = e.target.value;if (fruitList.includes(newValue)) {// 数组删除元素setFruitList(fruitList.filter((item) => item !== newValue));} else {// 数组新增元素setFruitList([...fruitList, newValue]);}}
相关文章:
react18【系列实用教程】useState (2024最新版)
类似 vue 的 data 选项 功能 向组件添加响应式变量,当响应式变量变化时,组件的视图UI也会跟着变化【数据驱动视图】 语法 参数为变量的初始值返回值为一个只有两个元素的数组,第一项元素为传入的参数,第二项元素是一个setter 函数…...
电商选品的数据是可以用爬虫进行采集的吗?
在电子商务领域,选品是一个至关重要的环节,它直接影响到商家的销售业绩和市场竞争力。为了做出更明智的选品决策,商家需要获取大量的市场数据和产品信息。那么,电商选品的数据是否可以通过爬虫进行采集呢? 爬虫在电商数…...
数据特征降维 | 局部线性嵌入(LLE)
局部线性嵌入(Locally Linear Embedding,LLE)是一种非线性降维和数据嵌入技术,用于将高维数据映射到低维空间中,以便更好地展示数据的结构和关系。 LLE的基本思想是假设数据样本在局部区域内可以近似由其相邻样本的线性组合表示。通过保持这种局部线性关系,LLE能够在低维…...
js发票查验、票据OCR接口助力解决发票录入与真假辨别难题
作为消费者,每位都是税法的监督员,为了保护自己的合法权益、共同维护市场秩序,消费者进行实际交易后无论是否需要报销,都应该主动向商家索取发票。一般来说发票主要有三种:增值税专用发票、普通发票、专业发票。以下&a…...
HTML静态网页成品作业(HTML+CSS+JS)——华为商城网页(1个页面)
🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,使用Javacsript代码实现首页图片切换轮播效果,共有1个页面…...
【吃透Java手写】5-RPC-简易版
【吃透Java手写】RPC-简易版-源码解析 1 RPC1.1 RPC概念1.2 常用RPC技术或框架1.3 初始工程1.3.1 Productor-common:HelloService1.3.2 Productor:HelloServiceImpl1.3.3 Consumer 2 模拟RPC2.1 Productor2.2 模拟一个RPC框架2.2.1 HttpServer2.2.2 Http…...
express 本地https服务 接口、静态文件,并支持跨域
var express require(express); var app express(); //设置跨域访问 app.all(*, function (req, res, next) {res.header(Access-Control-Allow-Origin, *);res.header(Access-Control-Allow-Credentials, true);res.header(Access-Control-Allow-Headers, Content-Type,Cont…...
从零手写实现 tomcat-08-tomcat 如何与 springboot 集成?
创作缘由 平时使用 tomcat 等 web 服务器不可谓不多,但是一直一知半解。 于是想着自己实现一个简单版本,学习一下 tomcat 的精髓。 系列教程 从零手写实现 apache Tomcat-01-入门介绍 从零手写实现 apache Tomcat-02-web.xml 入门详细介绍 从零手写…...
yarn 安装以及报错处理
前一种报错是由于没有安装yarn导致的,使用以下命令即可安装: npm install -g yarn 如果成功安装,将显示Yarn的版本号。 yarn --version 第二种报错是因为系统上的执行策略限制导致的。执行策略是一种安全功能,用于控制在计算机…...
31万奖金池等你挑战!IJCAI 2024 第九届“信也科技杯”全球AI算法大赛正式开赛!聚焦AI尖端赛题!
文章目录 ⭐️ 赛事概况⭐️ 赛事奖励⭐️ 赛事日程速览⭐️ 报名通道与赛事交流群⭐️ 关于 “信也科技杯”⭐️ 关于信也科技 ⭐️ 赛事概况 随着语音合成技术的不断进步,合成语音与真实语音之间的界限变得模糊,这不仅对数据安全构成威胁,也对科技伦理提出了新的要求。 第九…...
线性表—栈的实现
目录 栈的概念及结构 栈的实现 创建栈 栈的初始化 入栈 出栈 取出栈顶数据 判断栈是否为空 有效数据个数 栈的销毁 全代码 stack.h stack.c 应用 题目 示例 解题思路 代码实现 栈的概念及结构 栈是一种特殊的线性表,其只允许在固定的一端进行插入…...
react+antd --- 日期选择器,动态生成日期表格表头
先看一下效果---有当前月的日期 技术: 1: react 2:antd-UI库 -- table 3:moment--时间处理库 代码效果: import { Button, DatePicker, Table } from antd; import { useEffect, useState } from react; import momen…...
webgl入门-js与着色器间的数据传输
js与着色器间的数据传输 前言 课堂目标 使用js向着色器传递数据获取鼠标在canvas 中的webgl 坐标系位置 知识点 attribute 变量gl.vertextAttribute3f() 的同族函数鼠标在canvas 中的css 位置转webgl 坐标位uniform 变量gl.uniform4f() 的同族函数 第一章 用js控制一个点…...
springmvc异常处理
springmvc异常处理 spring中有三种方式可以优雅的处理异常 使用ExceptionHandler 使用HandlerExceptionResolver 使用ControllerAdviceExceptionHandler 使用ExceptionHandler 该方式只在指定的Controller有效,不会对其他的Controller产生影响 ControllerRequestMap…...
可拖动、连线的React画布组件有哪些? 官网分别是什么?
下面是一些常用的可拖动、连线的React画布组件以及它们的官方网站: react-dagre-d3:这是一个基于React和D3.js的可拖动、连线的图形编辑器组件。它使用DAG(有向无环图)布局算法,支持节点拖拽、连线、缩放等功能。官网&…...
专访 Staynex 创始人 Yuen Wong:酒店行业的变革者
整理:Tia,Techub News 传统酒店业其实已经很中心化了,几大巨头 OTA 平台几乎已经完成对行业的垄断,而酒店商家也不得不受制于平台的规则制度,向平台支付高比例的费用。Staynex 看到了其中的机会,并想利用区…...
最新版Ceph( Reef版本)块存储简单对接k8s(上集)
当前ceph 你的ceph集群上执行 1.创建名为k8s-rbd 的存储池 ceph osd pool create k8s-rbd 64 642.初始化 rbd pool init k8s-rbd3 创建k8s访问块设备的认证用户 ceph auth get-or-create client.kubernetes mon profile rbd osd profile rbd poolk8s-rbd部署 ceph-rbd-csi c…...
稳态大面积光伏组件IV测试太阳光模拟器
稳态大面积光伏组件IV测试太阳光模拟器是太阳能光伏组件质量检测和评价的重要步骤之一。本文将介绍光伏组件IV测试的原理及标准板选择。 I. 光伏组件IV测试原理 光伏组件IV测试即电流电压特性测试,是评估光伏组件性能的重要手段。其测量的主要参数为组件的电流和电…...
编写HTTP协议代理的一些知识(源码)
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 早期上网经常需要使用代理服务…...
LabVIEW天然气压缩因子软件设计
LabVIEW天然气压缩因子软件设计 项目背景 天然气作为一种重要的能源,其压缩因子的准确计算对于流量的计量和输送过程的优化具有关键意义。传统的计算方法不仅步骤繁琐,而且难以满足现场快速响应的需求。因此,开发一款既能保证计算精度又便于…...
从数据到模型:Paraformer与SenseVoice专业名词识别优化实战
1. 专业名词识别难题的根源分析 当你第一次听到语音识别模型把"冠状动脉粥样硬化"识别成"冠状动脉造样硬化"时,可能会觉得这只是个偶然错误。但当我们处理金融、医疗、科技等领域的专业音频时,这类错误会频繁出现,严重影…...
vue3新手福音:用快马生成带详细注释的示例代码,轻松掌握核心概念
最近在学习Vue3的过程中,我发现很多新手朋友都会被setup语法和各种响应式概念绕晕。作为一个刚入门的前端小白,我特别理解这种困惑。不过最近发现了一个超实用的方法——用InsCode(快马)平台生成带详细注释的Vue3示例代码,学习效率直接翻倍&a…...
告别乱码!用.editorconfig一劳永逸解决Unity团队编码冲突(附完整配置)
告别乱码!用.editorconfig一劳永逸解决Unity团队编码冲突(附完整配置) 团队协作开发Unity项目时,最令人头疼的问题之一莫过于编码格式不统一导致的乱码。想象一下这样的场景:你精心编写的C#脚本在同事的电脑上打开时&a…...
Godot引擎PCK文件解析与资源提取指南:从入门到专家
Godot引擎PCK文件解析与资源提取指南:从入门到专家 【免费下载链接】godot-unpacker godot .pck unpacker 项目地址: https://gitcode.com/gh_mirrors/go/godot-unpacker 一、基础认知:PCK文件的数字档案馆架构 Godot引擎的PCK文件(P…...
3个突破性方案让游戏玩家实现Steam创意工坊资源自由获取
3个突破性方案让游戏玩家实现Steam创意工坊资源自由获取 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 在数字娱乐日益普及的今天,Steam创意工坊作为游戏模组的重要…...
MinIO版本升级与主备同步实战:从数据迁移到高可用部署
1. MinIO版本升级的核心挑战 当你准备将MinIO从老版本升级到新版本时,最头疼的问题就是数据兼容性。我去年帮客户升级一个生产环境时,就遇到过新版本直接启动后报"Invalid arguments specified"的错误。这是因为MinIO的存储格式在不同大版本间…...
实战应用:基于快马打造社交媒体稀有符号昵称生成器
今天想和大家分享一个特别实用的工具开发过程——用InsCode(快马)平台快速搭建社交媒体稀有符号昵称生成器。作为一个经常混迹各种社交平台的用户,我发现在微信、微博、游戏里想取个与众不同的昵称实在太难了,常规字符根本不够炫酷,而手动组合…...
ComfyUI 自动化生产 3D资产 工作流笔记
ComfyUI 自动化生产 3D资产 工作流笔记 概念与初衷: 针对个人开发者,实现 AI 转 高质量3D资产的 积分限制,次数限制,降低生成成本。 零、工具网站: 1、HugginFace (模型下载站) 2、魔搭社区 …...
Kook Zimage真实幻想Turbo常见问题解决:生成全黑图?显存不足?看这篇就够了
Kook Zimage真实幻想Turbo常见问题解决:生成全黑图?显存不足?看这篇就够了 你是不是已经迫不及待地部署好了Kook Zimage真实幻想Turbo,准备大展身手创作奇幻大片,结果一运行,要么生成一张全黑的图片&#…...
Windows媒体播放终极解码方案:LAV Filters完整指南
Windows媒体播放终极解码方案:LAV Filters完整指南 【免费下载链接】LAVFilters LAV Filters - Open-Source DirectShow Media Splitter and Decoders 项目地址: https://gitcode.com/gh_mirrors/la/LAVFilters 如果你在Windows上观看视频时经常遇到格式不支…...
