使用React构建现代Web应用

news2024/10/27 20:24:18
💖 博客主页:瑕疵的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文档链接]

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

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

相关文章

Docker本地安装Minio对象存储

Docker本地安装Minio对象存储 1. 什么是 MinIO&#xff1f; MinIO 是一个开源的对象存储服务器。这意味着它允许你在互联网上存储大量数据&#xff0c;比如文件、图片、视频等&#xff0c;而不需要依赖传统的文件系统。MinIO 的特点在于它非常灵活、易于使用&#xff0c;同时…

【ruoyi-vue】ruoyi-vue 去掉数据库和redis

场景&#xff1a;采用ruoyi-vue作为一个简单的后台框架&#xff0c;不需要使用数据库&#xff0c;redis。因此采取以下方法去掉相关配置&#xff0c;防止启动时造成数据和redis不存在的报错。 1、去掉数据库 注释掉framework下的DruidConfig.java 2、去掉部分数据启动时的初…

将公有云变成本地磁盘的几种方式

因为微信更改了推送机制&#xff0c;不按照号主发文时间排序了。现在的规则是综合多种因素&#xff0c;你可能在今天收到昨天的推送&#xff0c;甚至前天的&#xff01; 如果你认可菜鸟小白的学习分享的话&#xff0c;就星标一下吧&#xff0c;只需要两步&#xff01; 这样你可…

猫头虎 分享:Python库 Click 的简介、安装、用法详解入门教程

&#x1f42f; 猫头虎 分享&#xff1a;Python库 Click 的简介、安装、用法详解入门教程 今天猫头虎带您一起探索 Click 库&#xff01;最近有位粉丝私信猫哥&#xff0c;问到在项目中如何用 Python 简单又高效地实现命令行工具。大家熟悉的 argparse 虽然功能齐全&#xff0c…

深入理解gPTP时间同步过程

泛化精确时间协议(gPTP)是一个用于实现精确时间同步的协议,特别适用于分布式系统中需要高度协调的操作,比如汽车电子、工业自动化等。 gPTP通过同步主节点(Time Master)和从节点(Time Slave)的时钟,实现全局一致的时间参考。 以下是gPTP实现主从时间同步的详细过程:…

WaveNet模型实现电力预测

项目源码获取方式见文章末尾&#xff01; 回复暗号&#xff1a;13&#xff0c;免费获取600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【EfficientNet-B6模型实现ISIC皮肤镜图像数据集分类】 2.【卫星图像道路检测De…

GeoWebCache1.26调用ArcGIS切片

常用网址&#xff1a; GeoServer GeoWebCache (osgeo.org) GeoServer 用户手册 — GeoServer 2.20.x 用户手册 一、版本需要适配&#xff1a;Geoserver与GeoWebCache、jdk等的版本适配对照 ​ 查看来源 二、准备工作 1、数据&#xff1a;Arcgis标准的切片&#xff0c;通过…

安全芯片 OPTIGA TRUST M 使用介绍与示例(基于STM32裸机)

文章目录 目的资料索引硬件电路软件框架介绍数据存储框架移植框架使用 使用示例示例地址与硬件连接通讯测试功能测试 总结 目的 OPTIGA TRUST M 是英飞凌推出的安全芯片&#xff0c;芯片通提供了很多 slot &#xff0c;用于存放各类安全证书、密钥、用户数据等&#xff0c;内置…

飞书文档解除复制限制

解除飞书文档没有编辑器权限限制复制功能方法 方法一&#xff1a;使用插件 方法二&#xff1a; 通过调试工具删除所有的copy事件 使用插件 缺点&#xff1a; 只有markdown格式&#xff0c;如果需要其他格式需要再通过Typora等markdown编辑器转pdf,word等格式 安装插件 Cloud Do…

Day02回文数

给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 回文数是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。 例如&#xff0c;121 是回文&#xff0c;而 …

关于 Linux 内核“合规要求”与俄罗斯制裁的一些澄清

原文&#xff1a;Michael Larabel - 2024.10.24 当 一些俄罗斯的 Linux 开发者被从内核的 MAINTAINERS 文件中移除 时&#xff0c;原因被描述为“合规要求”&#xff0c;但并未明确这些要求具体涉及什么内容。随后&#xff0c;Linus Torvalds 对此发表了评论&#xff0c;明确指…

便捷之选:微信小程序驱动的停车场管理系统

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 &#x1f345;获取源码联系方式请查看文末&#x1f345; 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目…

2024最新版 Tomcat安装与配置(带图详细步骤)简单易懂

官方网站&#xff1a; Apache Tomcat - 欢迎&#xff01; 一、选择下载版本&#xff08;本文选择tomcat 9版本为例&#xff09; 二、找到你下载压缩包的位置&#xff0c;进行解压 三、配置环境 1&#xff09;新建系统变量&#xff0c;变量名为&#xff1a; CATALINA_HOME 变…

GoogleChrome和Edge浏览器闪屏问题

GoogleChrome和Edge浏览器闪屏问题 文章目录 GoogleChrome和Edge浏览器闪屏问题 买了电脑半年, GoogleChrome和edge浏览器出现了一个令人头疼的问题–闪屏, 就是打开这两个浏览器之后, 就会出现电脑屏幕一闪一闪的, 过一会就看不见了, 跟黑夜里的闪电一样, 遇到这种情况我都会直…

Unbounded:一个无限生成式交互的角色生活模拟游戏

❤️ 如果你也关注大模型与 AI 的发展现状&#xff0c;且对大模型应用开发非常感兴趣&#xff0c;我会快速跟你分享最新的感兴趣的 AI 应用和热点信息&#xff0c;也会不定期分享自己的想法和开源实例&#xff0c;欢迎关注我哦&#xff01; &#x1f966; 微信公众号&#xff…

安全知识见闻-网络类型、协议、设备、安全

网络类型、协议、设备、安全 本章节包括局域网&#xff08;LAN&#xff09;、城域网&#xff08;MAN&#xff09;和广域网&#xff08;WAN&#xff09;。此外&#xff0c;还涉及了网络协议、网络设备和网络安全的基本概念。 目录 网络类型、协议、设备、安全 一、网络类型 …

vue使用阿里svg图标

最近开发项目的写前端时候&#xff0c;发现element的图标库不能满足我的需求&#xff0c;当然&#xff0c;大部分是够用的&#xff0c;不过某些特定按钮没有合适的图标,我是发现没有批量导入按钮的图标&#xff0c;所以找了阿里的适量图标库来使用 阿里矢量图标库 阿里矢量图…

241026-RHEL如何以root身份卸载Docker

在 RHEL 8.8 中&#xff0c;以 root 身份卸载 Docker 可以通过以下步骤完成&#xff1a; 停止 Docker 服务&#xff08;如果已启动&#xff09;&#xff1a; sudo systemctl stop docker删除 Docker 包&#xff1a; 运行以下命令卸载 Docker 引擎及其依赖包&#xff08;docker-…

LeetCode 107.二叉树的层次遍历 II

题目描述 给你二叉树的根节点 root &#xff0c;返回其节点值 自底向上的层序遍历 。 &#xff08;即按从叶子节点所在层到根节点所在的层&#xff0c;逐层从左向右遍历&#xff09; 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[1…

HBuilderX离线打包Android

HBuilderX离线打包Android 前言1.Android 离线SDK2.UniApp程序3.DCloud后台设置4.AndroidStudio打包&#xff08;1&#xff09;Import Project&#xff08;2&#xff09;AndroidManifest.xml&#xff08;3&#xff09;dcloud_control.xml&#xff08;4&#xff09;签名&#xf…