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

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

React 组件

组件是什么

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

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


// 定义一个组件
function MyButton() {
  // 组件的内部逻辑和视图 UI
  return <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.kler.cn/news/304342.html

相关文章:

  • 【Linux基础】02 权限
  • VUE+Tailwind网页开发
  • 大数据中一些常用的集群启停命令
  • oracle 如何查询表被锁
  • Vue自定义组件:解密v-model,轻松实现双向数据绑定
  • Nacos rce-0day漏洞复现(nacos 2.3.2)
  • 如何准备技术面试?
  • 利用AI驱动智能BI数据可视化-深度评测Amazon Quicksight(二)
  • Stream流的思想和获取Stream流
  • 设计模式重新整理
  • 中秋出游热度十足!喆啡酒店如何巧妙捕捉多元旅游需求?
  • 遥感技术在生态系统碳储量、碳收支、碳排放、碳循环以及人为源排放反演等领域的技术发展,实践角度解决遥感技术在生态、能源、大气等领域的碳排放监测及模拟问题
  • C++ | Leetcode C++题解之第397题整数替换
  • Coggle数据科学 | 科大讯飞AI大赛:人岗匹配挑战赛 赛季3
  • 怎么将几个pdf合成为一个?把几个PDF合并成为一个的8种方法
  • opencv图像透视处理
  • 机器学习(西瓜书)第 6 章 支持向量机
  • Jupyter notebook配置与使用(安装过程+环境配置+运行实例)
  • redis基本数据结构-string
  • 关于OceanBase 多模一体化的浅析
  • 探索螺钉设计:部分螺纹与全螺纹,哪种更适合你的项目?
  • 学习笔记 韩顺平 零基础30天学会Java(2024.9.14)
  • HashMap在并发场景下的问题
  • hku-mars雷达相机时间同步方案-硬件(MID360与海康MV-CB060-10UMUC-S)
  • Spring-cloud-gateway报错问题总结
  • 卷轴模式系统中的任务起源探索与趣味性设计策略分析
  • 【大模型专栏—进阶篇】语言模型创新大总结——“后起之秀”
  • rocketmq-client5.2手动给生产者和消费者设置access-key和secret-key值
  • Sparse4D v1
  • 从零开始学PostgreSQL (十四):高级功能