前端react入门day02-React中的事件绑定与组件

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹)

目录

React中的事件绑定

React 基础事件绑定

使用事件对象参数 

传递自定义参数 

同时传递事件对象和自定义参数 

React中的组件 

组件是什么

React组件

useState 

修改状态的规则

状态不可变

修改对象状态

组件的样式处理

classnames优化类名控制 


React中的事件绑定

React 基础事件绑定

语法: on + 事件名称 = { 事件处理程序 } ,整体上遵循驼峰命名法

使用事件对象参数 

语法:在事件回调函数中设置形参e

传递自定义参数 

语法:事件绑定的位置改造 成箭头函数的写法 ,在执行clickHandler实际处理业务函数的时候传递实参
注意:不能直接写函数调用,这里事件绑定需要一个 函数引用

同时传递事件对象和自定义参数 

语法:在事件绑定的位置传递事件实参e和自定义参数,clickHandler中声明形参,注意顺序对应

React中的组件 

组件是什么

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

组件化开发可以让开发者像搭积木一样构建一个完整的庞大的应用

React组件

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

useState 

useState 是一个 React Hook(函数),它允许我们向组件添加一个 状态变量 , 从而控制影响组件的渲染结果
本质:和普通JS变量不同的是,状态变量一旦发生变化组件的视图UI 也会跟着变化 (数据驱动视图)
// useState实现一个计数器按钮
import { useState } from 'react'
function App () {
  // 1. 调用useState添加一个状态变量
  // count 状态变量
  // setCount 修改状态变量的方法
  const [count, setCount] = useState(0)

  // 2. 点击事件回调
  const handleClick = () => {
    // 作用: 
    // 1. 用传入的新值修改count
    // 2. 重新使用新的count渲染UI
    setCount(count + 1)
  }
  return (
    <div>
      <button onClick={handleClick}>{count}</button>
    </div>
  )
}

export default App

修改状态的规则

状态不可变

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

修改对象状态

 规则:对于对象类型的状态变量,应该始终传给set方法一个全新的对象来进行修改

  

      直接修改原对象,不引发视图变化                        调用set传入新对象用于修改

组件的样式处理

React组件基础的样式控制有俩种方式

1. 行内样式(不推荐)
2. class类名控制
         
              index.css                                                        App.js

classnames优化类名控制 

classnames是一个简单的JS库,可以非常方便的 通过条件动态控制class类名的显示
现在的问题:字符串的拼接方式不够直观,也容易出错

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/111456.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

商城小程序开发流程详解:一步步打造专属电商应用

​随着移动互联网的普及&#xff0c;电商行业也迅速发展起来。而商城小程序作为电商行业中的一种新形式&#xff0c;越来越受到企业和个人的关注。那么&#xff0c;如何开发一款专属的商城小程序呢&#xff1f;下面给大家介绍商城小程序的开发流程&#xff0c;帮助大家一步步打…

【Mybatis-Plus】代码生成器

目录 安装插件 数据库建表 Other Config Database Code Generator 根据创建好的数据库表&#xff0c;来直接生成代码 安装插件 数据库建表 Other 点开之后有两个功能 1.数据库配置 2.代码生成 Config Database 首先点开这个配置数据库 Code Generator 配置完数据库…

vue项目中定制化音频展示,wavesurfer.js基本使用

效果图&#xff1a; wavesurfer是一个可定制的音频波形可视化&#xff0c;建立在Audio API和HTML5 Canvas之上。 基本使用&#xff1a; <body><script src"https://unpkg.com/wavesurfer.js"></script><div id"waveform"></di…

大厂面试题-JVM为什么使用元空间替换了永久代?

目录 面试解析 问题答案 面试解析 我们都知道Java8以及以后的版本中&#xff0c;JVM运行时数据区的结构都在慢慢调整和优化。但实际上这些变化&#xff0c;对于业务开发的小伙伴来说&#xff0c;没有任何影响。 因此我可以说&#xff0c;99%的人都回答不出这个问题。 但是…

分享8个分布式Kafka的使用场景

Kafka 最初是为海量日志处理而构建的。它保留消息直到过期&#xff0c;并让消费者按照自己的节奏提取消息。与它的前辈不同&#xff0c;Kafka 不仅仅是一个消息队列&#xff0c;它还是一个适用于各种情况的开源事件流平台。 1. 日志处理与分析 下图显示了典型的 ELK&#xff0…

♥ uniapp 环境搭建

♥ uniapp 环境搭建 开发uniapp需要用到的工具有两个&#xff1a; 1、用到的平台和地址&#xff1a; 需要了解的几个平台以及地址&#xff1a; &#xff08;1&#xff09;微信公众平台 https://mp.weixin.qq.com/ &#xff08;2&#xff09;微信开发文档 https://develo…

代码随想录day50|198.打家劫舍、213.打家劫舍II、337.打家劫舍 III

198.打家劫舍 &#xff08;中等&#xff09; leetcode题目链接&#xff1a;198. 打家劫舍 - 力扣&#xff08;LeetCode&#xff09; 文章讲解&#xff1a;代码随想录 (programmercarl.com) 视频讲解&#xff1a;动态规划&#xff0c;偷不偷这个房间呢&#xff1f;| LeetCode…

Android 13 Handler详解

1.Handler 简介 Handler 是一套 Android 消息传递机制。在多线程应用场景中&#xff0c;将子线程中需要更新 UI 的操作消息&#xff0c;传递到 UI 主线程&#xff0c;从而实现子线程通知 UI 更新最终实现异步消息处理。说白了是用于线程之间的通信。 Handler主要有4个重要类&a…

点云配准--对称式ICP

对称式ICP 写在前面的话 针对于局部平面不完美的情况&#xff0c;提出了一种对称式ICP目标函数&#xff0c;相较于传统的ICP方法&#xff0c;增大了收敛域&#xff0c;提高了收敛速度。论文理论说明不甚清楚&#xff0c;实验较少&#xff0c;但代码开源。 理论 对称目标函数…

提高微星笔记本Linux下散热性能,MSI-EC 驱动新补丁发布

导读近日消息&#xff0c;今年早些时候&#xff0c;Linux 6.4 中添加了 MSI-EC 驱动程序&#xff0c;允许对 Linux 系统微星笔记本电脑进行更多控制。 MSI-EC 驱动程序近日迎来新补丁&#xff0c;为微星笔记本带来 Cooler Boost 功能。该功能允许提高笔记本电脑的风扇转速&…

洞见UI自动化测试

随着软件行业的不断发展&#xff0c;建立一个完善的自动化测试体系变得至关重要。自动化测试包括三个方面&#xff1a;UI前端界面&#xff0c;Service服务契约和Unit底层单元如下图&#xff1a; 越是底层的测试&#xff0c;运行速度越快&#xff0c;时间开销越少&#xff0c;金…

设计模式——单例模式详解

目录 设计模式类型单例模式单例模式方式饿汉式静态常量方式静态代码块形式 懒汉式线程不安全&#xff08;不推荐&#xff09;懒汉式优化&#xff08;不推荐&#xff09; 双重检查&#xff08;推荐方式&#xff09;静态内部类&#xff08;推荐方式&#xff09;枚举方式&#xff…

Docker(1)——安装Docker以及配置阿里云镜像加速

目录 一、简介 二、安装Docker 1. 访问Docker官网 2. 卸载旧版本Dokcer 3. 下载yum-utils&#xff08;yum工具包集合&#xff09; 4. 设置国内镜像仓库 5. 更新yum软件包索引 6. 安装Docker 7. 启动Docker 8. 卸载Docker 三、阿里云镜像加速 1. 访问阿里云官网 2. …

containerd-rootless安装

实验环境&#xff1a;centos7.7.1908 参考文档&#xff1a; containerd &#xff08;nerdctl&#xff09; 依赖项 |无根容器 (rootlesscontaine.rs) [CentOS 7] 无法安装 containerd-rootless-setuptool.sh &#xff08;[ERROR] 需要 systemd &#xff08;systemctl --user&…

可直接在Maya实时表情捕捉的面捕头盔,为3D模型表情制作提速!

面捕表情捕捉头盔可以用于捕捉真人的面部表情&#xff0c;从微小的皱纹到大的脸部肌肉运动&#xff0c;通过面捕头盔&#xff0c;都可以实时转化到虚拟角色上。 在元宇宙浪潮下&#xff0c;围绕虚拟人的应用场景和时长变得愈加多元&#xff0c;人们对虚拟人的精度不再仅限于简…

AI机器人对话直播软件系统 带完整的搭建教程

AI机器人对话直播软件系统是一种基于人工智能技术的实时语音交互系统&#xff0c;具有自然语言处理、语音识别、语音合成等功能。该系统能够实现人与机器之间的智能对话&#xff0c;为企业提供更高效、更便捷的客户服务&#xff0c;同时还能为教育、娱乐等领域提供全新的互动体…

【Qt之QLocale】使用

描述 QLocale类可以在多种语言之间进行数字和字符串的转换。 QLocale类在构造函数中使用语言/国家对进行初始化&#xff0c;并提供类似于QString中的数字转字符串和字符串转数字的转换函数。 示例&#xff1a; QLocale egyptian(QLocale::Arabic, QLocale::Egypt);QString s1 …

淘宝价格监控-电商数据采集分析

一、什么是淘宝商品数据采集&#xff1f; 淘宝商品数据采集&#xff0c;顾名思义&#xff0c;就是通过技术手段对全网电商平台上的商品价格信息进行抓取并保存。通过将收集到的这些价格信息进行分析处理后得到该商品的成交价、折扣率等关键属性指标&#xff0c;从而为卖家提供…

从零开始的目标检测和关键点检测(一):用labelme标注数据集

从零开始的目标检测和关键点检测&#xff08;一&#xff09;&#xff1a;用labelme标注数据集 1、可视化标注结果2、划分数据集3、Lableme2COCO&#xff0c;将json文件转换为MS COCO格式 前言&#xff1a;前段时间用到了mmlab的mmdetction和mmpose&#xff0c;因此以一个小的数…