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

React 组件的基本使用,useState 状态变量的使用

React 组件

组件是什么

##### 概念:一个组件就是用户界面的一部分,它可以有自己的逻辑和外观,组件之间可以相互嵌套,也可以多次复用。

React,一个组件就是首字母大写的函数,内部存放了组件的逻辑和视图 UI,渲染组件只需要把组件当成标签书写即可


// 定义一个组件
function MyButton() {// 组件的内部逻辑和视图 UIreturn <button>Click me</button>
}// 使用组件
function App() {return (<div><MyButton /></div>)
}

## `useState`的基础使用

useState是React提供的Hook,可以让我们在函数组件中维护状态。

它允许我们向组件添加一个状态变量,从而控制影响组件的渲染结果。

本质:和普通 js 变量不同,状态变量一旦发生变化组件的视图UI也会跟着变化
/*** 项目的根组件** useState 状态管理** 实现一个计数器按钮*/import { useState } from "react";export default function App() {// 1. 调用 useState 状态管理函数,创建计数器状态和更新计数器状态的函数const [count, setCount] = useState(0);// 2. 实现计数器按钮的点击事件const handleClick = () => {/*** 作用:1. 用传入的新值修改 count*       2. 重新使用新的 count 值渲染组件*/setCount(count + 1);};// 3. 渲染计数器按钮和当前计数器值return (<div><h1>计数器:{count}</h1><button onClick={handleClick}>点击增加</button></div>);
}
  1. useState 是一个函数,返回值是一个数组。
  2. 数组中的第一个参数是状态变量,第二个参数是 set 函数,用来更新状态变量。
  3. useState 的参数将作为 count 的初始值。

useState 的修改状态规则

状态不可变

React 中,状态被认为是只读的,我们应该始终替换他而不是修改它,直接修改状态不能引发视图更新

const [count, setCount] = useState(0);const handleClick = () => {// count++; // 错误,不能直接修改状态/*** 作用:*  1.用传入的新值修改 count*  2.重新使用新的 count 值渲染组件*/setCount(count + 1);
}
修改对象状态

##### 规则:对于对象类型的状态变量。应该始终传给 set 函数一个新的对象来进行修改。

const [obj, setObj] = useState({ name: "张三", age: 20 });const handleClick = () => {// 错误,不能直接修改对象// obj.name = 'Join'// 正确,传给 set 函数一个新的对象setObj({...obj, name: 'Join' });
}
http://www.lryc.cn/news/440592.html

相关文章:

  • 空洞骑士 Hollow Knight 攻略
  • CSP-J 算法基础 广度优先搜索BFS
  • What is new in C# 7,8,9,10
  • Sqlserver常用sql
  • 基于SpringBoot+Vue+MySQL的考研互助交流平台
  • chatgpt个人版ssrf漏洞
  • 如何查看微信聊天记录?四种实用方法查询微信聊天记录,赶快码住!
  • 钢材表面缺陷数据集以coco格式做好了数据集的划分,1200张训练集,600张验证集,对应的json文件也在里面
  • 【Lua坑】Lua协程coroutine无法正常完整执行问题
  • istio中serviceentry结合egressgateway的使用
  • 使用 Python 实现 Windows 应用图标的便捷生成:一站式 PNG 转 ICO 工具20240918
  • 编程环境常用命令合集
  • Qt Creator 集成开发环境 常见问题
  • 使用Faiss进行K-Means聚类
  • 通过hosts.allow和hosts.deny限制用户登录
  • PWN College 关于sql盲注
  • 【Linux篇】Http协议(1)(笔记)
  • 员工疯狂打CALL!解锁企业微信新玩法,2024年必学秘籍来啦!
  • Spring boot从0到1 - day01
  • Flutter 项目结构的区别
  • EfficientFormerV2:重新思考视觉变换器以实现与MobileNet相当的尺寸和速度。
  • ASP.NET Core高效管理字符串集合
  • vm-tools的卸载重装,只能复制粘贴,无法拖拽文件!
  • Docker 容器网络技术
  • C++ 起始帧数、结束帧数、剪辑视频
  • 【项目一】基于pytest的自动化测试框架———解读requests模块
  • 升级Ubuntu内核的几种方法
  • Android绘制靶面,初步点击位置区域划分取值测试
  • 【SpringBoot】调度和执行定时任务--Quartz(超详细)
  • 低代码开发平台系统架构概述