React 的入门介绍

news2025/1/24 14:35:13

React 是什么

React是一个用于构建用户界面的JavaScript库。它由Facebook开发,并于2013年首次发布。React将用户界面拆分为小的可重用组件,每个组件都有自己的状态,并根据状态的变化来更新界面。

React使用了虚拟DOM(Virtual DOM)来优化界面更新的性能。虚拟DOM是一个轻量级的JavaScript对象,它是React元素的表示形式。当应用的状态发生变化时,React会创建一个新的虚拟DOM树,并与之前的虚拟DOM树进行比较,找出发生变化的部分,然后只更新这些部分的真实DOM,从而避免了不必要的DOM操作,提高了性能。

React采用了单向数据流的数据流模型。它将应用的状态保存在组件的state中,并通过props将状态传递给子组件。当状态发生变化时,React会自动更新组件的视图。

React还提供了一些生命周期方法,用于在组件不同阶段执行特定的代码。例如,componentDidMount方法会在组件渲染后被调用,可以用于执行一些初始化操作。

除了核心的React库,还有一些用于与React集成的附加库,例如React Router用于处理应用的路由,Redux用于管理应用的状态等。

总之,React是一个灵活、高效、可组合的用户界面构建库,它简化了复杂的UI开发,并提供了高性能的界面更新机制。它已经成为最流行的前端框架之一,被广泛应用于各种Web应用和移动应用的开发中。

版本历史

  • 1.0版本发布于2013年5月,是React的首个稳定版本。

  • 0.14版本发布于2015年10月,引入了许多重要的改进,包括新的钩子函数API、PureComponent以及无状态函数组件。

  • 15.0版本发布于2016年4月,引入了Fiber架构的初步实现,这是React内部的一种新的协调机制,旨在优化渲染过程。

  • 16.0版本发布于2017年9月,其中最重要的特性是对Fiber架构的完全实现。此外,16.0版本还引入了错误边界(Error Boundaries)的概念,用于处理组件中的错误。

  • 16.8版本发布于2019年2月,引入了Hooks,这是React的一项重大改进,允许开发者在无需编写类组件的情况下使用状态和其他React特性。

  • 17.0版本发布于2020年10月,是一个重大版本更新,主要目标是提供一种平滑迁移的路径,使得React的未来版本更易于升级。

快速示例

  1. 确保安装了 Node.js 和 npm
  2. 全局安装创建react程序的命令工具
npm install -g create-react-app
  1. 在命令行创建 React 类型的应用程序
npx create-react-app my-react

这个命令会创建一个名为my-react的新文件夹,并在其中安装所有的React依赖项。
目录结构如下:
在这里插入图片描述

  1. 进入新创建的项目文件夹:
cd my-react
  1. 使用以下命令启动开发服务器:
npm start

这将启动React应用程序并在浏览器中打开一个新的标签页。

在这里插入图片描述

  1. 编辑src/App.js文件。这个文件是React应用程序的主要入口点。

  2. src/App.js中可以编写React组件。以下是一个简单的示例:

import React from 'react';

function App() {
  return (
    <div>
      <h1>Hello, React!</h1>
    </div>
  );
}

export default App;
  1. 保存src/App.js文件并查看浏览器中的React应用程序。应该看到一个标题为"Hello, React!"的页面。
    在这里插入图片描述

问题解决之 npm ERR! network request to https://registry.npmjs.org/create-react-app failed, reason: connect ETIMEDOUT 104.16.0.35:443

在上面的示例中, 使用命令 npm install -g create-react-app 安装 create-react-app命令工具的时候会出现上述的错误。

多次运行上面命令有可能会解决问题,有时候网络问题会自行解决。 如果多次运行依然无法安装, 可以尝试如下方式:

首先这个错误通常是由于网络连接问题导致的。

  1. 检查网络连接:确保您的计算机可以正常连接到互联网,并且没有任何防火墙或代理限制。尝试使用浏览器访问 https://registry.npmjs.org/create-react-app,看看是否能够成功访问。

  2. 使用镜像源:可以尝试使用淘宝镜像或者其他 npm 镜像源来进行安装。可以通过运行以下命令来设置淘宝镜像源:

npm config set registry https://registry.npm.taobao.org/

或者设置回 npm 官方镜像源:

npm config set registry https://registry.npmjs.org/

React 相关的库和工具

以下是一些常用的React相关的库和工具:

  1. Redux:用于管理应用的状态和数据流的库。
  2. React Router:用于管理React应用的路由和导航的库。
  3. Axios:用于发送AJAX请求的库。
  4. Jest:用于编写单元测试的库。
  5. Enzyme:用于编写React组件测试的库。
  6. Babel:用于将JSX和ES6+语法转换为浏览器可以理解的语法的工具。
  7. Webpack:用于打包和构建React应用的工具。
  8. ESLint:用于静态代码分析和检查代码质量的工具。
  9. Prettier:用于格式化代码的工具,可以在保存文件时自动格式化代码。
  10. Create React App:用于快速搭建React应用的脚手架工具。

这只是一小部分React相关的库和工具,还有很多其他的库和工具可以用于增强React应用的开发体验和功能。

React 的应用

React 被许多大型的公司和组织使用,以下是一些使用React的公司和项目的示例:

  1. Facebook - React是由Facebook开发的,因此Facebook自身的网站和应用程序都使用React作为前端框架。

  2. Instagram - Instagram也是由Facebook拥有的应用程序,也使用React作为其前端框架。

  3. Airbnb - Airbnb是一个在线房屋租赁平台,他们的前端也是使用React来构建。

  4. Netflix - Netflix是一个流媒体平台,他们的前端界面也是使用React构建的。

  5. WhatsApp - WhatsApp是一个全球流行的即时通讯应用程序,他们也使用React作为其前端框架。

  6. Dropbox - Dropbox是一个在线文件存储和共享平台,他们使用React来构建其用户界面。

  7. Slack - Slack是一个团队协作工具,他们的前端也是使用React构建的。

  8. Microsoft - 微软的许多产品和服务,包括Office 365和Outlook.com,都使用React作为其前端框架之一。

  9. GitHub - GitHub是一个源代码托管平台,他们使用React来构建其用户界面。

  10. Shopify - Shopify是一个电子商务平台,他们的前端界面也是使用React构建的。

React 可以用于的应用包括:

  1. 单页应用(Single-page applications):React 可以用于构建单页应用,其中所有的页面交互都在一个页面中进行,通过动态加载数据和更新页面的内容来提供快速的用户体验。

  2. 移动应用:React Native 是一个基于 React 的框架,可以使用 JavaScript 来构建原生移动应用。通过使用 React Native,开发人员可以同时在 iOS 和 Android 平台上构建应用,减少了开发成本和维护的工作。

  3. 多页应用(Multi-page applications):React 也可以用于构建多页应用,其中每个页面都有自己的 React 组件,通过组件的嵌套和交互来构建复杂的页面。

  4. 桌面应用:通过使用 Electron,一个使用 Web 技术构建跨平台桌面应用的开源框架,React 可以用于构建桌面应用。这样一来,开发人员可以使用熟悉的前端技术栈来构建跨平台的桌面应用。

参考

  • 官方网站: https://react.dev/
  • 中文学习: https://react.docschina.org/learn


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

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

相关文章

[ISP]DCT离散余弦变换及C++代码demo

1.基本定义 离散余弦变换(DCT for Discrete Cosine Transform) DCT&#xff08;Discrete Cosine Transform&#xff0c;离散余弦变换&#xff09;是一种常用的信号处理技术&#xff0c;广泛应用于图像处理、音频处理、视频压缩等领域。DCT将一个信号或数据序列从时域&#xf…

最新JVM面试题(持续更新)

JVM 1 为什么需要JVM&#xff0c;不要JVM可以吗&#xff1f; JVM可以帮助我们屏蔽底层的操作系统 一次编译&#xff0c;到处运行 JVM可以运行Class文件 2 JDK&#xff0c;JRE以及JVM的关系 3 我们的编译器到底干了什么事&#xff1f; 仅仅是将我们的 .java 文件转换成了 .c…

数据库系列之:什么是 SAP HANA?

数据库系列之&#xff1a;什么是 SAP HANA&#xff1f; 一、什么是 SAP HANA&#xff1f;二、什么是内存数据库&#xff1f;三、SAP HANA 有多快&#xff1f;四、SAP HANA 的十大优势五、SAP HANA 架构六、数据库设计七、数据库管理八、应用开发九、高级分析十、数据虚拟化 一、…

原生IP是什么?如何获取海外原生IP?

一、什么是原生IP 原生IP地址是互联网服务提供商&#xff08;ISP&#xff09;直接分配给用户的真实IP地址&#xff0c;无需代理或转发。这类IP的注册国家与IP所在服务器的注册地相符。这种IP地址直接与用户的设备或网络关联&#xff0c;不会被任何中间服务器或代理转发或隐藏。…

后台组件-语言包

<groupId>org.qlm</groupId><artifactId>qlm-language</artifactId><version>1.0-SNAPSHOT</version> 平台提供多语言支持&#xff0c;以上为语言包&#xff0c;提供后台多语言支持。首批实现&#xff1a; public class LanguageConstan…

【深度学习笔记】优化算法——梯度下降

梯度下降 &#x1f3f7;sec_gd 尽管梯度下降&#xff08;gradient descent&#xff09;很少直接用于深度学习&#xff0c; 但了解它是理解下一节随机梯度下降算法的关键。 例如&#xff0c;由于学习率过大&#xff0c;优化问题可能会发散&#xff0c;这种现象早已在梯度下降中…

@RequestBody

目录 概述 深入细节 案例 RequestBody与前端传过来的json数据的匹配规则 指定模型中的属性对应什么key 用Valid校验RequestBody的参数 根据RequestBody的内容来区分使用哪个资源 概述 RequestBody主要用来接收前端传递给后端的json字符串中的数据(请求体中的数据)而最常…

AI资讯2024-03-06|超越GPT-4的大模型一夜来袭,霸主之位花落谁家

全球最强大模型一夜易主&#xff0c;GPT-4时代终结 新一代AI模型Claude 3系列的登场&#xff0c;如同一场风暴席卷AI领域。GPT-4被迅速抛入阴影&#xff0c;Anthropic的最新力作完胜天下&#xff0c;以无可匹敌之势彰显其强大。Claude 3在多模态和语言能力方面都凌驾于GPT-4之上…

Mendix 开发实践指南|Mendix 环境搭建

在上一篇文章中&#xff0c;我们深入探讨了Mendix平台的一些关键概念&#xff0c;从而获得了对Mendix模型驱动设计哲学的清晰理解。随着这些核心理念的掌握&#xff0c;我们自然会产生一系列实践层面的问题&#xff0c;尤其是关于如何开始使用Mendix进行开发的细节。 本篇文章…

【力扣 - 无重复字符的最长字符串】

题目描述 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc"&#xff0c;所以其长度为 3。 示例 2: 输入: s "bbbbb" 输出: 1 …

2024年最新Android面试精讲,面试题附答案

一. 开发背景 想要成为一名优秀的Android开发&#xff0c;你需要一份完备的知识体系&#xff0c;在这里&#xff0c;让我们一起成长为自己所想的那样。 Android 相关 1. Android 之 SharedPreferences 内部原理浅析 2. Android 源码分析-消息队列和 Looper 3. Android 源码分析…

状压dp详解,棋盘式、集合型,OJ详解

文章目录 零、引例-小国王1.问题描述2.暴力枚举3.多维dp4.维度压缩 一、状压dp1.认识状压dp2.棋盘式(基于连通性)2.1小国王2.1.1题目链接2.1.2思路分析2.1.3AC代码 2.2玉米田2.2.1题目链接2.2.2思路分析2.2.3AC代码 2.3炮兵阵地2.3.1题目链接2.3.2思路分析2.3.3AC代码 2.4蒙德里…

网络、网络协议模型、UDP编程——计算机网络——day01

今天来到了网络编程&#xff0c;主要讲了网络、网络协议模型以及UDP编程 网络 网络主要是进行&#xff1a;数据传输和数据共享 网络协议模型 OSI协议模型应用层 实际发送的数据表示层 发送的数据是否加密会话层 是否建立会话连接传…

激光炸弹c++

题目 输入样例&#xff1a; 2 1 0 0 1 1 1 1输出样例&#xff1a; 1 思路 由题知本题要求某个区间内数的和&#xff0c;联想到二维前缀和。我们可以先使用二维前缀和模板计算各区间的价值。然后枚举以某点为右下角&#xff0c;大小为R*R的正方形价值&#xff0c;取最大值。 …

06 - 镜像管理之:基础知识

1 了解镜像 Docker镜像是一个特殊的文件系统&#xff0c;除了提供容器运行时所需的程序、库、资源、配置等文件外&#xff0c;还包含了一些为运行时准备的一些配置参数&#xff08;如匿名卷、环境变量、用户等&#xff09;。 但注意&#xff0c; 镜像不包含任何动态数据&#…

【DataRoom】- 基于VUE的开源的大屏可视化设计器

【DataRoom】- 基于VUE的开源的大屏可视化设计器 DataRoom是一款基于SpringBoot、MyBatisPlus、Vue、ElementUI、G2Plot、Echarts等技术栈的大屏设计器&#xff0c;具备大屏设计、预览能力&#xff0c;支持MySQL、Oracle、PostgreSQL、SQLServer、ElasticSearch、JSON、JS、HTT…

springcloud:3.7测试线程池服务隔离

服务提供者【test-provider8001】 Openfeign远程调用服务提供者搭建 文章地址http://t.csdnimg.cn/06iz8 相关接口 测试远程调用&#xff1a;http://localhost:8001/payment/index 服务消费者【test-consumer-resilience4j8004】 Openfeign远程调用消费者搭建 文章地址http://t…

Dubbo的线程模型

1 线程模型概述 Dubbo默认的底层网络通信使用的是Netty。 服务提供方NettyServer使用两级线程池&#xff0c;其EventLoopGroup&#xff08;boss&#xff09;主要用来接收客户端的连接请求&#xff0c;并把完成TCP三次握手的连接分发给EventLoopGroup&#xff08;worker&#…

【音视频开发好书推荐】RTC程序设计:实时音视频权威指南

目录 1、WebRTC概述2、好书推荐3、本书内容4、本书特色5、作者简介6、谁适合看这本书 1、WebRTC概述 WebRTC&#xff08;Web Real-Time Communication&#xff09;是一个由Google发起的实时音视频通讯C开源库&#xff0c;其提供了音视频采集、编码、网络传输&#xff0c;解码显…

【考研数学】基础660太难了?一个办法搞定660

觉得题目太难&#xff0c;大概率是题目超出了自己当前的水平 题型没见过&#xff0c;或者太复杂&#xff0c;属于跳级学习了&#xff0c;正确的思路就是回归到自己的水平线&#xff0c;题目略难即可。 这样做题的话&#xff0c;大部分题目涉及的点不会超出自己的能力范围&…