React学习笔记(一)——react基础

news2025/2/5 11:57:11

1. React 介绍

1.1 React是什么

React由Meta公司研发,是一个用于 构建Web和原生交互界面的库

1.2 React的优势

相较于传统基于DOM开发的优势:
  • 组件化的开发方式
  • 不错的性能

相较于其它前端框架的优势:

  • 丰富的生态
  • 跨平台支持

1.3 React的市场情况

全球最流行,大厂必备

2. 开发环境搭建

2.1 使用create-react-app快速搭建开发环境

create-react-app是一个快速 创建React开发环境的工具, 底层由Webpack构建, 封装了配置细节 ,开箱即用
执行命令:
  • npx create-react-app react-basic
    • npx Node.js工具命令,查找并执行后续的包命令
    • create-react-app 核心包(固定写法),用于创建React项目
    • react-basic React项目的名称(可以自定义)
创建React项目的更多方式:
  • https://zh-hans.react.dev/learn/start-a-new-react-project

2.2 react 项目文件说明

  • 项目的根组件 App.js

  • 项目的入口,项目从这里开始运行 index.js

2.3 index.js项目入口文件

  • App.js -> index.js -> public/index.html(root)

2.4 App.js 项目根组件

3. JSX基础-概念和本质

3.1 什么是JSX

概念:
  • JSX 是 JavaScript 和 XML(HTML)的缩写,表示在 JS 代码中编写 HTML 模版结构,它是React 中编写 UI 模版的方式
 
优势:
  • HTML的声明式模版写法
  • JS的可编程能力

3.2 JSX的本质

JSX 并不是标准的 JS 语法,它是  JS 的语法扩展 ,浏览器本身不能识别,需要通过 解析工具做解析 之后才能在浏览器中运行

3.3 JSX高频场景-JSX中使用JS表达式

在 JSX 中可以通过 大括号语法{} 识别 JavaScript中的表达式,比如常见的变量、函数调用、方法调用等等

  • 使用引号传递字符串
  • 使用JS变量
  • 函数调用和方法调用
  • 使用JavaScript对象

​​​注意:

  • if语句、switch语句、变量声明属于语句,不是表达式,不能出现在{}中

3.4 JSX高频场景-JSX中实现列表渲染

语法:
  • 在JSX中可以使用原生JS中的map方法遍历渲染列表
  • map方法会返回一个新的数组,该数组包含通过对原始数组中的每个元素应用一个函数处理后得到的结果。

  • map 循环那个结构 return那个结构

  • key 的作用: React框架内部使用,提升更新性能

3.5 JSX高频场景-JSX中实现条件渲染

语法:
  • 在React中,可以通过逻辑与运算符&&、三元表达式(?:)实现基础的条件渲染

3.6 JSX高频场景-JSX中实现复杂条件渲染

需求:
  • 列表中需要根据文章状态适配三种情况,单图,三图,和无图三种模式
解决方案:
  • 自定义函数 + if判断语句

4. React中的事件绑定

4.1 React 基础事件绑定

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

4.2 使用事件对象参数

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

4.3 传递自定义参数

语法:
  • 事件绑定的位置改造成箭头函数的写法,在执行clickHandler实际处理业务函数的时候传递实参

注意:

  • 不能直接写函数调用,这里事件绑定需要一个函数引用

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

5. React中的组件

5.1 组件是什么

概念:
  • 一个组件就是用户界面的一部分,它可以有自己的逻辑和外观,组件之间可以互相嵌套,也可以复用多次
  • 组件化开发可以让开发者像搭积木一样构建一个完整的庞大的应用

5.2 React组件

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

6. useState

6.1 useState基础使用

useState 是一个 React Hook(函数),它允许我们向组件添加一个 状态变量 , 从而控制影响组件的渲染结果
5 本质:
  • 和普通JS变量不同的是,状态变量一旦发生变化组件的视图UI也会跟着变化(数据驱动视图)

说明:

  • useState是一个函数,返回值是一个数组
  • 数组中的第一个参数是状态变量,第二个参数是set函数用来修改状态变量
  • useState的参数将作为count的初始值
  • 需要先从 react 中导入 useState 函数

6.2 修改状态的规则—状态不可变

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

6.3 修改对象状态

规则:
  • 对于对象类型的状态变量,应该始终传给set方法一个全新的对象来进行修改
直接修改原对象,不引发视图变化
调用set传入新对象用于修改

7. 组件的样式处理

7.1 组件基础样式方案

React组件基础的样式控制有俩种方式:
  • 行内样式(不推荐)
  • class类名控制

① 行内样式

  • 第一个 {} 是一个语法, 第二个{} 是一个对象

② class类名控制

  • index.css

  • App.js

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

国内知名电器集团售后服务系统被黑!损失1.2亿!

两款软件入侵 近期,一款名为“A助手”的软件和另一款“B配置工具”被揭露存在严重的非法活动。 这两款软件被不法分子利用,并成功侵入了某知名企业的电器售后服务系统。通过技术手段,伪造了电器安装服务的工单,并以此骗取了大量的…

24年银行从业资格考试报名照规格要求

24年银行从业资格考试报名照规格要求 #银行从业 #银行从业资格证 #银行从业考试 #银行从业资格考试 #银行从业资格证报名照片 #银从

Unity 波函数坍缩算法随机地图生成

Unity 波函数坍缩算法随机地图生成 波函数波函数基本概念位置空间波函数动量空间波函数两种波函数之间的关系波函数的本征值和本征态波函数坍缩 熵是什么熵作为状态函数时间之箭 实现原理举个例子:2D迷宫地图生成 Unity 如何实现前期准备单元格代码瓦片地图代码波函…

使用亮数据爬虫工具解锁复杂爬虫场景

在当今数据驱动型时代,数据采集和分析能力算是个人和企业的核心竞争力。然而,手动采集数据耗时费力且效率低下,而且容易被网站封禁。 我之前使用过一个爬虫工具,亮数据(Bright Data) ,是一款低…

PCIe学习笔记(25)

数据完整性 PCI Express的基本数据可靠性机制包含在数据链路层(data Link Layer)中,它使用32位的LCRC (CRC)码逐链路检测TLP中的错误,并采用逐链路重传机制进行错误恢复。TLP是一个数据和事务控制单元,由位于PCI Express域“边缘”的数据源(…

重大发现!看Apache与nginx工作模型,享web服务幸福人生

文章目录 文章相关连接如下: Web 服务基础介绍ApacheApache prefork 模型 Apache worker 模型Apache event模型 Nginx-高性能的 Web 服务端nginx源码安装平滑升级和回滚平滑升级步骤:回滚步骤 nginx启动文件 文章相关连接如下: 如果想更多了…

【GH】【EXCEL】P4: Chart

文章目录 data and chartdonut chart (radial chart)Radial Chart bar chartBar Chart line chartLine Chart Scatter ChartScatter Chart Surface ChartSurface Chart Chart DecoratorsChart Decorators Chart GraphicsChart Graphics data and chart donut chart (radial cha…

《面板变系数模型及 Stata 具体操作步骤》

目录 一、文献综述 二、理论原理 三、实证模型 四、稳健性检验 五、程序代码及解释 六、代码运行结果 一、文献综述 在经济和社会科学研究领域,面板数据模型因其能够同时考虑个体和时间维度的信息而被广泛应用。传统的面板数据模型通常假设系数是固定的&#…

1.初识redis

文章目录 1.认识redis1.1 mysql和redis 对比1.2分布式系统1.2.1单机架构与分布式架构1.2.2数据库分离(应用服务器和存储服务器分离)与负载均衡1.2.3负载均衡器1.2.4 数据库读写分离1.2.5 数据库服务器引入缓存1.2.6数据库分库分表1.2.7 引入微服务 2.常见概念解释2.1 应用(Appl…

GoModule

GOPATH 最早的就是GOPATH构建模式, go get下载的包都在path中的src目录下 src目录是源代码存放目录。 package mainimport ("net/http""github.com/gorilla/mux" )func main() {r : mux.NewRouter()r.HandleFunc("/hello", func(w h…

iptables流量走向图

关联教学 https://www.bilibili.com/video/BV1dw411J7Qk/?spm_id_from333.337.search-card.all.click

7.2 算法设计与分析

分治法(考的概率较低) 回溯法(考的概率较低) 动态规划法(考的概率较高) 1

第四届机电一体化、自动化与智能控制国际学术会议(MAIC 2024)

目录 大会官网 会议简介 组织机构 大会主席 程序委员会主席 主讲嘉宾 征稿主题 参会说明 大会官网 http://www.icmaic.org 会议简介 第四届机电一体化、自动化与智能控制国际学术会议(MAIC 2024)将于2024年9月27-29日在中国成都召开。MAIC 20…

高性能MySQL04_操作系统和硬件优化

1. 从软件本身和它运行的典型工作负载来看,MySQL通常也更适合运行在廉价硬件上 2. 基本资源 2.1. CPU 2.2. 内存 2.3. 磁盘 2.4. 瓶颈 2.5. 网络资源 3. CPU 3.1. 最常见的瓶颈是CPU耗尽 3.2. 检查CPU使用率来确定工作负载是否受CPU限制 3.3. 低延迟&…

机器人学——正向运动学(机械臂)

Manipulator Forward Kinematics 机械臂基础概念 Joint and Link 连杆长度、连杆夹角 连杆偏距与关节角 移动关节看距离、旋转关节看角度 如何在杆上建立坐标系 地杆(link0)坐标系的建立 末端杆件坐标系的建立 DH表达法 如何计算出两杆之间的变换矩阵…

Qt鼠标键盘事件监听

普通的程序中. 鼠标事件监听 要监听鼠标事件,你可以使用QMouseEvent类,它提供了多种类型的鼠标事件,如QMouseEvent::MouseButtonPress、QMouseEvent::MouseButtonRelease、QMouseEvent::MouseMove等。 但是离开程序后就很难监听到&#xff0c…

机器学习第十一章--特征选择与稀疏学习

一、子集搜索与评价 我们将属性称为 “特征”(feature),对当前学习任务有用的属性称为 “相关特征”(relevant feature)、没什么用的属性称为 “无关特征”(irrelevant feature).从给定的特征集合中选择出相关特征子集的过程&…

单位订餐小程序开发:便捷高效,重塑职场餐饮新体验

随着移动互联网技术的飞速发展,各行各业都在积极探索数字化转型之路,以提升工作效率与用户体验。在单位日常运营中,餐饮管理作为保障员工基本生活需求的重要环节,其便捷性、高效性直接关系到员工的工作满意度与整体氛围。因此&…

鸿蒙内核源码分析(Fork篇) | 一次调用,两次返回

笔者第一次看到fork时,说是一次调用,两次返回,当时就懵圈了,多新鲜,真的很难理解.因为这足以颠覆了以往对函数的认知, 函数调用还能这么玩,父进程调用一次,父子进程各返回一次.而且只…

linux memory cgroup的memory.move_charge_at_immigrate含义

1.内核文档 上面的例子说明: 最开始某个进程是在cgroup A中,后面要迁移到cgroup B中,那么进程的内存计数是否要完全迁入B中,就是通过memory.move_charge_at_immigrate控制,如果目标cgroup也就是B设置了1到该字段中&am…