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

使用React构建现代Web应用

💖 博客主页:瑕疵的CSDN主页
💻 Gitee主页:瑕疵的gitee主页
🚀 文章专栏:《热点资讯》

使用React构建现代Web应用

    • 1 引言
    • 2 React简介
    • 3 安装React
    • 4 创建React项目
    • 5 设计应用结构
    • 6 创建组件
    • 7 使用组件
    • 8 设置路由
    • 9 数据绑定与表单
    • 10 服务与HTTP请求
    • 11 测试与调试
    • 12 总结
    • 13 参考资料

1 引言

React是Facebook开发的一款用于构建用户界面的JavaScript库。React以其高效的虚拟DOM更新机制和组件化的思想而著称,成为当今Web开发中最流行的前端框架之一。本文将详细介绍如何使用React来构建一个现代化的Web应用。
一张展示使用React构建现代Web应用的流程图,包括安装React、创建React项目、设计应用结构、创建组件、设置路由、数据绑定与表单处理、服务与HTTP请求以及测试与调试等内容。

2 React简介

React通过使用JSX语法来描述UI结构,并通过组件化的方式来组织代码。React的虚拟DOM机制使得只有实际发生变化的部分会被重新渲染,从而大大提高了应用的性能。

3 安装React

首先,确保你的计算机上已安装了Node.js,然后安装Create React App脚手架。

npm install -g create-react-app

4 创建React项目

使用Create React App创建一个新的React项目。

cd /path/to/workdir
create-react-app my-react-app
cd my-react-app
npm start

现在可以通过浏览器访问 http://localhost:3000/ 来查看初始的应用界面。

5 设计应用结构

React应用通常由多个组件组成,每个组件负责一个独立的功能模块。

my-react-app/
├── node_modules/
├── public/
│   ├── favicon.ico
│   ├── index.html
│   └── manifest.json
├── src/
│   ├── App.css
│   ├── App.js
│   ├── App.test.js
│   ├── index.css
│   ├── index.js
│   ├── logo.svg
│   └── serviceWorker.js
├── .gitignore
├── package.json
├── README.md
└── yarn.lock

6 创建组件

使用React创建一个Home组件和一个About组件。

// src/components/Home.js
import React from 'react';const Home = () => (<div><h1>Home Page</h1><p>Welcome to your new React app!</p></div>
);export default Home;

7 使用组件

在主应用组件中导入并使用创建的组件。

// src/App.js
import React from 'react';
import Home from './components/Home';
import About from './components/About';const App = () => (<div className="App"><Home /><About /></div>
);export default App;

8 设置路由

为了让用户在不同页面之间导航,我们需要设置路由。

npm install react-router-dom

编辑 src/App.js 文件来配置路由。

// src/App.js
import React from 'react';
import { BrowserRouter as Router, Route, Switch, Link } from 'react-router-dom';
import Home from './components/Home';
import About from './components/About';const App = () => (<Router><div className="App"><nav><ul><li><Link to="/">Home</Link></li><li><Link to="/about">About</Link></li></ul></nav><Switch><Route exact path="/" component={Home} /><Route exact path="/about" component={About} /></Switch></div></Router>
);export default App;

9 数据绑定与表单

React提供了多种数据绑定的方式,包括受控组件和非受控组件。

// src/components/About.js
import React, { useState } from 'react';const About = () => {const [name, setName] = useState('');const handleChange = event => {setName(event.target.value);};return (<div><h1>About Page</h1><input type="text" value={name} onChange={handleChange} /><p>You entered: {name}</p></div>);
};export default About;

10 服务与HTTP请求

使用axios或fetch API来发送HTTP请求,获取远程数据。

npm install axios
// src/components/Home.js
import React, { useEffect, useState } from 'react';
import axios from 'axios';const Home = () => {const [data, setData] = useState([]);useEffect(() => {const fetchData = async () => {const result = await axios('https://api.example.com/data', {method: 'get',});setData(result.data);};fetchData();}, []);return (<div><h1>Home Page</h1><ul>{data.map(item => (<li key={item.id}>{item.name}</li>))}</ul></div>);
};export default Home;

11 测试与调试

React官方推荐使用React Testing Library来编写单元测试。

npm install --save-dev @testing-library/react @testing-library/jest-dom
// src/components/__tests__/Home.test.js
import { render, screen } from '@testing-library/react';
import Home from '../Home';describe('Home', () => {it('renders welcome message', () => {render(<Home />);expect(screen.getByText(/Welcome to your new React app!/i)).toBeInTheDocument();});
});

使用浏览器开发者工具来调试应用。

12 总结

通过本文,我们介绍了如何使用React框架来构建现代化的Web应用,包括安装React、创建React项目、设计应用结构、创建组件、设置路由、数据绑定与表单处理、服务与HTTP请求以及测试与调试。掌握了这些基础知识后,你可以开始构建自己的React应用程序了。

13 参考资料

  • [1] React Official Documentation. (2024). React.dev. Retrieved from [React文档链接]

相关文章:

使用React构建现代Web应用

&#x1f496; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4bb; Gitee主页&#xff1a;瑕疵的gitee主页 &#x1f680; 文章专栏&#xff1a;《热点资讯》 使用React构建现代Web应用 1 引言 2 React简介 3 安装React 4 创建React项目 5 设计应用结构 6 创建组件 7 使用组件…...

【系统设计】Merkle 算法在 Git 中的应用:深入理解与实践

引言 在现代软件开发中&#xff0c;Git 已成为版本控制的事实标准。Git 能够快速处理项目的变化&#xff0c;确保代码的完整性&#xff0c;其中一个关键技术就是 Merkle 树。本文将深入探讨 Merkle 算法的原理&#xff0c;以及其在 Git 中的具体应用。 1. Merkle 算法的原理 …...

【umi max】关于umi构建的项目在本地服务运行正常,但是部署时无致命报错却白屏,html文档的#root容器没有子元素的原因及解决办法

我们在部署时运维很可能会因为项目太多&#xff0c;进而放到不同的目录底下&#xff0c;例如project/H5-TEST-DEMO &#xff08;其中project是项目的存放目录&#xff0c;而H5-TEST-DEMO才是我们部署的项目根目录&#xff09;于是乎就会出现我们在本地服务里调试得好好的&#…...

Openlayers高级交互(14/20):汽车移动轨迹动画(开始、暂停、结束)

本示例演示在vue+openlayers中实现轨迹动画,这里设置了小汽车开始,暂停,结束等的控制键,采用了线段步长位置获取坐标来定位点的方式来显示小车的动态。 效果图 专栏名称内容介绍Openlayers基础实战 (72篇)专栏提供73篇文章,为小白群体提供基础知识及示例演示,能解决基…...

蓝牙MCU蓝牙医疗检测相关案例

英尚蓝牙MCU配套成熟的网络协议栈和丰富的示例代码及多平台APP工具。无需二次开发&#xff0c;即连即用&#xff1b;提供特色蓝牙/串口/USB三通芯片&#xff0c;为更多复杂无线应用赋能。相关产品及技术欢迎咨询。 应用案例说明: • 应用包括血糖仪,血氧仪,血压计,体温计,毒品…...

pytorch环境安装和更新,额外装cuda有什么意义

更新了一下设备和环境&#xff0c;看了眼其他教程&#xff0c;突然间发现都还让装cuda和cudnn。。。明明很早之前pytorch使用的和系统的cuda就已经脱钩了。 测试了一下不额外装也没发现什么问题&#xff0c;如果有谁知道装系统的cuda对pytorch有何意义&#xff0c;可以评论区告…...

【观成科技】APT组织常用开源和商业工具加密流量特征分析

概述 在当前的网络安全环境中&#xff0c;APT组织的活动愈发频繁&#xff0c;利用其高级技术和社会工程手段&#xff0c;针对全球范围内的政府、军事和企业目标发起了一系列复杂的网络攻击。在不断升级的攻击中&#xff0c;开源和商业工具凭借其灵活性、易用性和全球化攻击能力…...

Java开发者的Python快速进修指南:面向对象进阶

在上一期中,我们对Python中的对象声明进行了初步介绍。这一期,我们将深入探讨对象继承、组合以及多态这三个核心概念。不过,这里不打算赘述太多理论,因为我们都知道,Python与Java在这些方面的主要区别主要体现在语法上。例如,Python支持多重继承,这意味着一个类可以同时…...

【商汤科技-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…...

诱骗取电快充协议芯片,支持与其它 MCU 共用 D+D-网络和电脑传输数据

前言 在科技日新月异的今天&#xff0c;快充技术已成为智能手机、平板电脑乃至笔记本电脑等电子设备不可或缺的一部分。各大厂商为了提升用户体验&#xff0c;纷纷推出了自家的快充协议&#xff0c;这些协议不仅让充电速度大幅提升&#xff0c;还带来了更加智能、安全的充电体验…...

Java Executor ScheduledExecutorService 源码

前言 相关系列 《Java & Executor & 目录》《Java & Executor & ScheduledExecutorService & 源码》《Java & Executor & ScheduledExecutorService & 总结》《Java & Executor & ScheduledExecutorService & 问题》 涉及内容 …...

【力扣 + 牛客 | SQL题 | 每日6题】牛客SQL热题 + 力扣hard

1. 牛客SQL热题206&#xff1a;获取每个部门中当前员工薪水最高的相关信息 1.1 题目&#xff1a; 描述 有一个员工表dept_emp简况如下: emp_nodept_nofrom_dateto_date10001d0011986-06-269999-01-0110002d0011996-08-039999-01-0110003d0021996-08-039999-01-01 有一个薪水…...

前端常见错误

搭建vueelement-ui脚手架错误 基于vue官方文档和element官方文档搭建手册报错 安装element Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist. types.js?8ad0:39 Uncaught TypeError: Cannot read property prototype of undefi…...

Edge 浏览器插件开发:图片切割插件

Edge 浏览器插件开发&#xff1a;图片切割插件 在图片处理领域&#xff0c;按比例切割图片是一个常见需求。本文将带你开发一个 Edge 浏览器插件&#xff0c;用于将用户上传的图片分割成 4 个部分并自动下载到本地。同时&#xff0c;本文介绍如何使用 cursor 辅助工具来更高效…...

银河麒麟v10 xrdp安装

为了解决科技被卡脖子的问题&#xff0c;国家正在大力推进软硬件系统的信创替代&#xff0c;对于一些平时对Linux操作系统不太熟练的用户来讲提出了更高的挑战和要求。本文以银河麒麟v10 24.03为例带领大家配置kylin v10的远程桌面。 最近公司为了配置信创开发新购了几台银河麒…...

Leetcode 删除有序数组中的重复项 Ⅱ

使用双指针来解决此问题&#xff0c;关键词“有序”数组&#xff0c;一个 index 指针用于构建新数组&#xff0c;一个 i 指针用于遍历整个数组 以下是代码的中文解释以及算法思想&#xff1a; 算法思想 这道题要求对一个有序数组进行去重&#xff0c;使得每个元素最多出现两…...

大模型学习笔记------什么是大模型

大模型学习笔记------什么是大模型 1、大模型定义2、大模型发展历程3、大模型的核心特点4、大模型的应用领域5、大模型面临的挑战6、结束语 近两年大模型超级火&#xff0c;并且相关产品迎来爆发式增长。在工作中&#xff0c;也常常接触到大模型&#xff0c;并且已经开始进行相…...

【unique_str 源码学习】

文章目录 &#xff11;&#xff0e;删除器定义2. operator->() 运算符重载3. add_lvalue_reference<element_type>::type 使用 基本原理这篇博主写的很详细 https://yngzmiao.blog.csdn.net/article/details/105725663 &#xff11;&#xff0e;删除器定义 deleter_…...

flask第一个应用

文章目录 安装一、编程第一步二、引入配置三、代码解析 安装 python环境安装的过程就不重复赘述了&#xff0c;flask安装使用命令pip install Flask即可&#xff0c;使用命令pip show Flask查看flask版本信息 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供…...

华为OD机试真题(Python/JS/C/C++)- 考点 - 细节

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题 点这里。 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

全面解析数据库:从基础概念到前沿应用​

在数字化时代&#xff0c;数据已成为企业和社会发展的核心资产&#xff0c;而数据库作为存储、管理和处理数据的关键工具&#xff0c;在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理&#xff0c;到社交网络的用户数据存储&#xff0c;再到金融行业的交易记录处理&a…...