React 学习小结(一)

React实战-如何在ReactJs中调用Google、Baidu地图 React实战-如何在ReactJs中调用Google、Baidu地图 在这个互联网时代,对地图的运用已经成为Web、移动各类应用的必选项。国内外各大地图应用提供商均有开放的Api供大家使用,当然更具使用的功能会提供付费版和免费版,如果仅仅只是小的应用或者练手,完全可以调用其免费版。调用的方式也很简单,跟你调用其他的第三方库类似。但是由于ReactJs的实现方式存在一些特殊性,其调用Google 阅读详情

所有的 Tips 均为本人 OneNote 中的笔记,复制过来就是图片,懒得转文本了

第一章:React入门

一、React简介

1.1 概念

React 是一个将数据渲染为 HTML 视图的开源 JavaScript 库
由 Facebook(现 meta) 开源

1.2 工作流程

  1. 发送请求获取数据
  2. 处理数据(过滤、整理格式等)
  3. 操作 DOM 呈现页面

1.3 为什么要学 React(React 有什么优点 / 原生 JS 的缺点)

  1. 原生 JavaScript 操作 DOM 繁琐、效率低(React 有成熟的 DOM-API 操作 UI)
  2. 使用 JavaScript 直接操作 DOM,浏览器会进行大量的重绘重排(React 通过优秀的 Diffing 算法优化 DOM 操作)
  3. 原生 JavaScript 没有组件化编码方案,代码复用率低

1.4 React 的特点

  1. 采用组件化模式、声明式编码,提高开发效率及组件复用率
  2. 在 React Native 中可以使用 React 语法进行 移动端开发
  3. 使用 虚拟DOM + 优秀的 Diffing算法,尽量减少与真实 DOM 的交互,提高效率

1.5 举个例子

情景:包含 100 个用户的列表
要求:新增一个用户
原生 JS 做法:新生成 101 个 DOM,去覆盖掉原来 100 个 DOM,效率低
React 做法:在虚拟 DOM 中与之前的 DOM 进行比较,最终生成新增的 DOM,效率高(生成增量)

二、React 的基本使用

2.1 相关 JS 库

  1. react.js :React核心库
  2. react-dom.js :提供操作 DOM 的 React 扩展库
  3. babel.min.js :解析 JSX 语法代码转化为 JS 代码的库,还会将 ES6 转化为 ES5

2.2 Hello React 案例

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>hello_react</title>
</head>
<body>
	<!-- 准备好一个“容器” -->
	<div id="test"></div>

	<!-- 引入react核心库 -->
	<script type="text/javascript" src="../js/react.development.js"></script>
	<!-- 引入react-dom,用于支持react操作DOM -->
	<script type="text/javascript" src="../js/react-dom.development.js"></script>
	<!-- 引入babel,用于将jsx转为js -->
	<script type="text/javascript" src="../js/babel.min.js"></script>

	<script type="text/babel" > /* 此处一定要写babel */
		//1.创建虚拟DOM
		const VDOM = <h1>Hello,React</h1> /* 此处一定不要写引号,因为不是字符串 */
		//2.渲染虚拟DOM到页面
		ReactDOM.render(VDOM,document.getElementById('test'))
	</script>
</body>
</html>

2.3 创建虚拟 DOM 的两种方式

  1. 使用 JSX 创建
//1.使用 JSX 创建虚拟DOM
const VDOM = (  /* 此处一定不要写引号,因为不是字符串 */
	<h1 id="title">
		<span>Hello,React</span>
	</h1>
)
  1. 使用 JS 创建(不推荐)
//2.使用 JS 创建虚拟DOM
const VDOM = React.createElement('h1'{id:'title'},React.createElement('span',{},'Hello,React'))

2.4 虚拟 DOM 与 真实 DOM

  1. 本质是 Object 类型的对象(一般对象)
  2. 虚拟 DOM 比较“轻”,真实 DOM 比较“重”,因为虚拟 DOM 是 React 内部在用,无需真实 DOM 上那么多的属性
  3. 虚拟 DOM 最终会被 React 转化为真实 DOM,呈现在页面上
  4. 我们编码时基本只需要操作 React 的虚拟 DOM 相关数据,React 会转换为真实 DOM 变化,从而更新界面

Tips:
babel会开启严格模式,this指向undefined

三、React JSX

3.1 JSX 简介

全称:JavaScript XML
定义:类似于 XML 的 JS 扩展语法
本质:React.createElement(component, props,…,children) 方法的语法糖(语法糖可以理解为就是一种封装好的简便写法)
作用:用来简化创建虚拟 DOM
需注意的点:
1.不是字符串,也不是 HTML/XML 标签
2.最终产生一个 JS 对象
3.标签名任意:HTML 标签或其他标签
4.标签属性任意:HTML 标签属性或其他
5.浏览器不能直接运行 JSX 代码,需要 babel 转译为纯 JS 代码才能运行

3.2 JSX 语法规则

  1. 定义虚拟DOM时,不要写引号
  2. 标签中混入JS表达式时要用{}
  3. 样式的类名指定不要用class,要用className
  4. 内联样式,要用style={{key:value}}的形式去写
  5. 只有一个根标签
  6. 标签必须闭合
  7. 标签首字母
    (1) 若小写字母开头,则将该标签转为html中同名元素,若html中无该标签对应的同名元素,则报错
    (2) 若大写字母开头,react就去渲染对应的组件,若组件没有定义,则报错

3.3 渲染虚拟 DOM

  1. 语法
ReactDOM.render(virtualDOM, containerDOM)
  1. 作用:将虚拟 DOM 元素渲染到页面的真实容器 DOM 中显示
  2. 参数说明
    (1)virtualDOM:纯 JS 或 JSX 创建的虚拟 DOM 对象
    (2)containerDOM:用来包含虚拟 DOM 的真实 DOM 元素对象(一般是一个 div)

3.4 举个例子

const myId = 'CCNU'
const myData = 'Hello, React'
//1.创建虚拟DOM
const VDOM = (
	<div>
		<h2 className="title" id={myId.toLowerCase()}>
			<span style={{color:'white',fontSize:'29px'}}>{myData.toLowerCase()}</span>
		</h2>
		<h2 className="title" id={myId.toUpperCase()}>
			<span style={{color:'white',fontSize:'29px'}}>{myData.toLowerCase()}</span>
		</h2>
		<input type="text"/>
	</div>
)
//2.渲染虚拟DOM到页面
ReactDOM.render(VDOM,document.getElementById('test'))

四、模块与组件、模块化与组件化

4.1 模块

  1. 理解:向外提供特定功能的 JS 程序, 一般就是一个 JS 文件
  2. 为什么要拆成模块:随着业务逻辑增加,代码越来越多且复杂
  3. 作用:复用 JS , 简化 JS 的编写, 提高 JS 运行效率

4.2 组件

  1. 理解:用来实现局部功能效果的代码和资源的集合(html/css/js/image等等)
  2. 为什么要用组件: 一个界面的功能更复杂
  3. 作用:复用编码, 简化项目编码, 提高运行效率

Tips: 模块化编码 与 组件化编码 的区别
在这里插入图片描述

4.3 模块化

当应用的 JS 都以模块来编写的, 这个应用就是一个模块化的应用

4.4 组件化

当应用是以多组件的方式实现, 这个应用就是一个组件化的应用
组件化也是工程化的一部分

4.5 举个例子

在这里插入图片描述
包含三个组件:Header、LeftMenu、AllCate
如 Header 组件,可能是包含了 html/css/js/img/video/font…,这些所有实现头部功能的元素组合起来形成 Header 组件

React 系列小结:

React 学习小结(一)
React 学习小结(二)
React 学习小结(三)
React 学习小结(四)
React 系列小结(五)
React 系列小结(六)

ReactJS_1:从基础到进阶的全面学习 本文还有配套的精品资源,点击获取 简介:ReactJS是由Facebook开发的开源JavaScript库,以其组件化开发和虚拟DOM特性为核心,用于构建高效的用户界面。本资料包提供了从基础知识到高级应用的完整学习路径,包括但不限于组件的props和state管理、React Router路由配置、React Hooks的使用、环境配置、测试工具应用、性能优化技巧,以及与其... 阅读详情

相关推荐

vhr 微人事系统安装与部署教程(SpringBoot + Vue 项目实战)

vhr(微人事)是一个开源的人力资源管理系统项目。系统采用前后端分离架构,主要技术栈包括:后端:MyBatis前端:VueElement UIAxios数据库:MySQL系统通常包含以下模块:员工管理部门管理职位管理薪资管理权限管理系统管理整体功能已经接近企业级后台系统。vhr(微人事)是一个非常经典的开源人力资源管理系统项目,基于SpringBoot + Vue 前后端分离架构。系统包含:员工管理部门管理权限管理薪资管理。

m0_69484557的博客 487

babel教程

Babel是什么?

caiqian97的博客 1623

Ubuntu 22.04 上 Mezzanine CMS 完整安装指南

CMS(内容管理系统)是构建博客、企业官网等静态与动态内容混合站点的核心技术栈;Django 作为 Python 生态中最成熟的 Web 框架,凭借其 ORM、Admin 和安全机制,成为 CMS 开发的首选基础。Mezzanine 是基于 Django 的轻量级 CMS,以开箱即用、零配置多语言和内置 SEO 工具为特色,特别适合中小项目快速落地。在 Ubuntu 这类强调稳定性的服务器操作系统上部署时,关键挑战并非代码逻辑,而是系统层依赖协同——如 Python 版本锁定、SQLite FTS5 支持、

weixin_33508411的博客 304

babel使用中出现“use strict“; 严格模式 如何去除?

安装方法:npm install babel-plugin-transform-remove-strict-mode。安装 babel-plugin-transform-remove-strict-mode 依赖。使用babel进行es6转es5时,默认转化之后是严格模式,有些时候我们想去除严格模式。- 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;- 消除代码运行的一些不安全之处,保证代码运行的安全;主要有以下几个:(错误检测、规范、效率、安全、面向未来)

weixin_67623295的博客 1378

【020】基于51单片机智能路灯系统Proteus仿真与实物设计

【020】基于51单片机智能路灯系统Proteus仿真与实物设计

小邓子分享官的博客 1881

QML教程04 - Image:搞定界面上的所有图片

本文是QML教程系列的第四篇,重点讲解Image控件的实战用法。文章从图片显示常见的变形、卡顿等问题入手,详细介绍了Image的核心属性和使用技巧。主要内容包括:图片路径的三种写法(相对路径、qrc资源、网络URL)、最重要的fillMode属性解析(PreserveAspectFit、PreserveAspectCrop、Stretch的适用场景)、性能优化方法(sourceSize设置)、异步加载(asynchronous)以及圆形头像的实现方案。

BenBierBa的博客 1610

项目中常用的一些基础配置

一、关于bable.config.js const options = {presets:[ '@babel/env', '@vue/app', '@babel/preset-env', targets: { edge: '17', firefox: '60', chrome: '67', safari: '11.1' } } ], plugins:['@babel/plug...

qq_51958779的博客 759

芒果YOLOv8改进52:主干Backbone篇之GhostNetV2:提出原创GhostNetV2 架构升级版:引入长距离注意力机制增强廉价操作,构建更强端侧轻量型骨干,打造高效轻量级检测器

长距离注意力机制增强廉价操作,打造轻量级检测器

包括YOLOv5、YOLOv7、YOLOv8等模型改进 1612

React Native 在 build 的时候如果出现 `babel.config.js` 配置文件的错误

React Native 在 build 的时候如果出现以下错误, 就是配置文件的错误.通常出现这个错误, 是的格式错误.

galoiszhou的博客 644

AI实时盯盘与素材更新迭代功能开发——千川素材投流系统完全指南

《AI驱动的千川素材投流系统完全指南》摘要 本文针对抖音电商生态中巨量千川平台的素材投放挑战,提出了一套AI驱动的实时盯盘与素材更新迭代解决方案。系统通过分层架构设计,整合数据采集、实时监控、AI分析和自动化执行模块,实现分钟级数据追踪与智能决策。核心功能包括实时数据采集、异常检测、自动化投放调整和素材生命周期管理,有效解决人工盯盘效率低、素材生命周期短、决策响应慢等痛点。系统采用Python+FastAPI技术栈,结合机器学习和自动化工具,提供从数据采集到决策执行的全链路解决方案,帮助商家提升投放效率和R

huanghm88的专栏 238

YOLOv8源码解析与复现:ShuffleAttention:高效的混合注意力机制 实现通道和空间混合注意力

随着深度学习在计算机视觉领域的飞速发展,卷积神经网络(CNNs)已经成为图像分类、目标检测、语义分割等任务的核心。为了进一步提升模型的性能,研究者们引入了“注意力机制”,旨在让网络能够动态地关注输入数据中最具信息量的部分。经典的注意力模块,如SE-Net(Squeeze-and-Excitation Networks)和CBAM(Convolutional Block Attention Module),通过通道注意力或结合通道与空间注意力,显著增强了模型的特征表达能力。

FJN110的博客 555

Android端ReactNative环境搭建——下

首先,babel.config.js是babel转换器的相关配置,因为es2015使用了一些高级语法,babel则是将这些高级语法转换成浏览器引擎能够识别的语法;因为rn端的代码执行的是js代码,而js代码是动态语言,它最令人恶心的一点是:它是不会报错的。而且有趣的一点是,我们使用npx命令初始化一个rn项目的时候,其实也是用yarn来下载相关的依赖的,因为初始化的工程有一个yarn.lock文件,这就是最好的见证。我们还是分两大部门来介绍;具体细节,感兴趣的同学可以查阅相关的资料,我们这里就不介绍了。

qq_36828822的博客 1334

HDMI接口及其在编程中的应用

在编程中,我们可以使用HDMI接口来控制和管理连接到计算机的HDMI设备。本文将介绍HDMI接口的基本原理以及如何在编程中使用HDMI接口。在编程中,我们可以使用HDMI接口来控制和管理连接到计算机的HDMI设备。本文介绍了HDMI接口的基本原理,并提供了使用Python编程语言和相关库实现HDMI接口应用的示例代码。我们可以使用编程语言提供的音频库来生成和播放音频,并将其通过HDMI接口输出到连接的设备上。我们可以使用编程语言提供的音频库来生成和播放音频,并将其通过HDMI接口输出到连接的设备上。

CodeByte的博客 804

React学习小结(一)

一、React的发展 facebook在构建instagram网站的时候遇见两个问题: 1、数据绑定的时候,大量操作真实dom,性能成本太高 2、网站的数据流向太混乱,不好控制 于是facebook起初调研过市场上已存的mvc框架,发现都不太满意,于是就推陈出新,开发了react框架,并在2013年五月份开源。 二、React概述 和angularJS一样react核心解决的问题是数据...

weixin_30565327的博客 108

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

React hooks学习小结(一)—— key

the key lets React identify the item throughout its lifetime. (React通过key对item识别跟踪,是唯一标识符)

Erya Programming learning 610

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

React.js学习知识小结(一)

学习React也有半个月了吧,这里对所学的基础知识做个简单的总结。自己先是跟着官方文档学,差不多学了四五天,也跟着入门教程做了一个简单的小栗子。然后跟着阮一峰老师的教程上手了几个小Demo,后来在网上发现了一本很好的书React.js小书,自己断断续续也学了几天,上面也几个实战的小项目,可以跟着练练手。 话不多说,就直接来总结吧! JSX 组件 区分props和state 生命周期函数 事件

qq_32021031的博客 305

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

入门指南:从零开始学习ReactJS

ReactJS是一个强大的JavaScript库,用于构建用户界面。它由Facebook开发,并于2013年首次发布。自那时以来,React已成为前端开发中最受欢迎的库之一,许多公司和开发者都在使用它来构建高性能、交互式的Web应用程序。本文将向您介绍ReactJS的基础知识,并通过实践示例来帮助您入门。我们将从React的核心概念开始,逐步深入,直到您能够构建简单的React应用为止。

努力是为了站在万人之中,成为别人的光 2万+

React学习教程,从入门到精通, ReactJS - 安装:初学者指南(3)

在我们开始安装之前,让我们快速了解一下ReactJS是什么。React是一个流行的JavaScript库,用于构建用户界面,尤其是单页应用程序。它主要是关于创建可重用的UI组件,这些组件管理自己的状态,使得构建复杂的界面变得更加容易。

qq_45746668的博客 2531

ReactJS入门(一)—— 初步认识React

它返回了一个p标签,其中的内容是 this.props.abc 和 this.props.name,这里的 this 指的是组件 Component1 本身,因此比如 this.props.name 获取到的便是组件 Component1 自身的属性 name 的值(abc 和 name 的值我们都在 Component2 中进行了定义)。2. React很擅长于处理组件化的页面,在页面上搭组件的形式有点像搭乐高一样,因此用上React的项目需求常规为界面组件化。isClick :!

精选资讯文章 6361

使用reactjs-popup创建React模态框(Modal)的完整指南

在现代Web开发中,模态框(Modal)是一种常见的UI组件,用于显示重要信息、收集用户输入或确认操作。reactjs-popup库提供了一种简单而强大的方式来创建React模态框,无需复杂的配置即可实现专业级的弹窗效果。 ## 基础模态框实现 使用reactjs-popup创建基础模态框非常简单,只需在Popup组件上添加`modal`属性即可: ```jsx import Popup f

gitblog_00215的博客 1329

react方面的pdf_ReactJS中文API.pdf

ReactJS中文API1.顶层API1.1ReactReact是 React 库的入口。如果使用的是预编译包 ,则 React是全局的 ;如果使用 CommonJS 模块系统,则可以用 require() 函数引入React。1.1.1React.createClassReactClasscreateClass(objectspecification)创建一个组件类 ,并作出定义。组件实现了 r...

weixin_39571087的博客 1384

使用reactjs-popup创建React Modal

如今,模态是React应用程序中最常用的组件之一,通过一种简单的方法来创建React Modals将帮助您在即将到来的React应用程序中快速了解与Modals相关的功能。 在本教程中,我们将仅使用22行代码构建一个简单的React Modal。 下面的gif可以帮助您了解我们正在尝试构建的内容 开始吧 创建React项目 首先,使用create-react-app CLI创建一个简单...

编程故事的地方 1936

ReactJS学习小结

ReactJS小结 关于ReactJS主要有以下几点: 1、ReactJs是基于组件化的开发,所以最终你的页面应该是由若干个小组件组成的大组件。 2、可以通过属性,将值传递到组件内部,同理也可以通过属性将内部的结果传递到父级组件(留给大家研究);要对某些值的变化做DOM操作的,要把这些值放到state中。 3、为组件添加外部css样式时,类名应该写成className而不是class;添加内部...

炒饭的博客 297

reactjs-vite-tailwindcss-boilerplate核心功能揭秘:为什么它是React项目的终极选择

reactjs-vite-tailwindcss-boilerplate是一个集成了Vite、React 18、TypeScript、Vitest、Testing Library、TailwindCSS 3、Eslint和Prettier的强大项目模板,为React开发者提供了一站式的开发解决方案,帮助快速构建现代化的Web应用。 ## 🌟 核心技术栈解析 ### Vite:极速构建体验 作

gitblog_00620的博客 2004

ReactJS 101代码规范终极指南:Airbnb React/JSX风格指南的实际应用

ReactJS 101作为React开发者的入门指南,不仅教授React基础知识,还特别强调了代码规范的重要性。在React开发中,遵循统一的代码规范是提升团队协作效率和代码质量的关键。本文将深入探讨如何在ReactJS 101项目中实际应用Airbnb React/JSX风格指南,帮助开发者编写更专业、更易维护的React代码。 ## 📋 为什么需要React代码规范? 在团队协作开发中,

gitblog_00879的博客 1860
上一篇: HTML 学习小结
下一篇: React 学习小结(二)
APythonC
博客等级 码龄7年 23粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值