【详细讲解React 快速入门教程】

news2024/11/24 6:29:04

在这里插入图片描述

🔥博主:程序员不想YY啊🔥
💫CSDN优质创作者,CSDN实力新星,CSDN博客专家💫
🤗点赞🎈收藏⭐再看💫养成习惯
🌈希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步!🌈

React

  • 0. 前言
  • 1. 环境准备
  • 2. 创建一个新的 React 应用
  • 3. 了解项目结构
  • 4. 编辑 App 组件
  • 5. JSX 语法
  • 6. 组件和 Props
  • 7. State 和生命周期
  • 8. 使用 Hooks
  • 9. 测试你的组件
  • 10. 部署你的应用

0. 前言

React是一个用于构建用户界面的 JavaScript 库,由 Facebook 发起并开源,下面是一个简要的 React 快速入门教程,帮助你开始使用这个强大工具:

1. 环境准备

在开始之前,请确保你已经安装了 Node.js 和 npm (Node.js 的包管理器)。你可以在 nodejs.org 上下载安装最新版的 Node.js,它通常包含 npm。

2. 创建一个新的 React 应用

使用 create-react-app 可以快速生成一个新的 React 应用。打开你的终端(命令行工具),然后输入:

npx create-react-app my-react-app
cd my-react-app
npm start

这会创建一个名为 my-react-app 的新目录,其中包含所有的初始文件,并启动一个开发服务器,然后在浏览器中打开你的新应用。

3. 了解项目结构

my-react-app 文件夹中,你会看到以下重要的文件和文件夹:

  • 💫public/index.html: 这是你的应用的主 HTML 文件。
  • 💫src/index.js: 这是 React 应用的入口文件。
  • 💫src/App.js: 这是一个基本的组件文件,包含了应用的初始内容。

4. 编辑 App 组件

接下来,打开 src/App.js 文件。这里定义了一个名为 App 的React 组件,它返回一段能够被渲染的 JSX 代码。

function App() {
  return (
    <div className="App">
      <header className="App-header">
        <p>
          Edit <code>src/App.js</code> and save to reload.
        </p>
      </header>
    </div>
  );
}

export default App;

可以修改上面的 App 组件,例如,更改段落 <p> 中的文字并保存文件,你的浏览器会自动刷新并显示新的内容。

5. JSX 语法

JSX 是一种看起来很像 HTML 的 JavaScript 语法扩展。与 React 一起使用时,JSX 可以让你更方便地描述 UI 应该呈现出什么样子。

6. 组件和 Props

组件是 React 应用的核心概念之一,它们让你能够拆分 UI 成独立的、可复用的部分,并且可以独立地考虑每个部分。

Props 是组件的参数。你可以这样创建一个带有 props 的组件:

function Welcome(props) {
  return <h1>Hello, {props.name}</h1>;
}

并在其他组件中使用它:

<Welcome name="Sara" />

7. State 和生命周期

State 是 React 组件的另一个重要概念,State 允许 React 组件在不需要重新加载页面的情况下,响应用户输入、网络响应和其他事件。

使用 State,你需要将函数组件转换为类组件或使用 Hooks。一个类组件例子:

class Clock extends React.Component {
  constructor(props) {
    super(props);
    this.state = {date: new Date()};
  }

  componentDidMount() {
    this.timerID = setInterval(
      () => this.tick(),
      1000
    );
  }

  componentWillUnmount() {
    clearInterval(this.timerID);
  }

  tick() {
    this.setState({
      date: new Date()
    });
  }

  render() {
    return (
      <div>
        <h1>Hello, world!</h1>
        <h2>It is {this.state.date.toLocaleTimeString()}.</h2>
      </div>
    );
  }
}

8. 使用 Hooks

从 React 16.8 开始,你可以在不编写类的情况下使用 state 和其他 React 特性,这得益于引入了 Hooks。

import React, { useState, useEffect } from 'react';

function Clock() {
  const [date, setDate] = useState(new Date());

  useEffect(() => {
    const timerID = setInterval(() => tick(), 1000);

    return () => {
      clearInterval(timerID);
    };
  }, []);

  function tick() {
    setDate(new Date());
  }

  return (
    <div>
      <h1>Hello, world!</h1>
      <h2>It is {date.toLocaleTimeString()}.</h2>
    </div>
  );
}

9. 测试你的组件

你的 React 应用可以通过各种方式来测试,一种流行的方法是使用 Jest 框架进行测试,它通常与 React 应用一起安装。

10. 部署你的应用

一旦你的应用做好了发布的准备,你可以运行 npm run build 来构建一个用于生产的版本,这会在你的项目目录下创建一个 build 文件夹,其中包含了用于部署的文件。

进一步学习 React,建议阅读 React 官方文档,用以深入理解这个库以及它的高级功能。

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

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

相关文章

稀碎从零算法笔记Day26-LeetCode:跳跃游戏

断更多天&#xff0c;懒狗ex 题型&#xff1a;数组、模拟、类似双指针&#xff1f; 链接&#xff1a;55. 跳跃游戏 - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1a;LeetCode 题目描述 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组…

JAVA批量下载

环境&#xff1a; JDK:1.7.0_80 tomcat:7.0.47 工程截图&#xff1a; 1.布署到tomcat 2.在浏览器中访问 启用数据库支持 启用数据库后下载信息将会保存在数据库中。在关闭重启浏览器后仍然可以继续下载。 将“DataBase”配置为true则为启用数据库支持 使用mysql文件夹下的脚…

【算法刷题】链表笔试题解析(1)

一、链表分割 题目描述&#xff1a; 链接&#xff1a;链表分割 题目分析&#xff1a; 这题直接处理并不好做&#xff0c;我们可以构建前后两个链表&#xff0c;将小于x值的结点放在链表a内&#xff0c;将其它结点放在链表b内&#xff0c;这样将原链表遍历完后&#xff0c;原链…

FKSS型煤层注水封孔器向光而行

要保持自己喜欢的样子 不要随波逐流 也不要过度失落 温柔的人 会有一个好的结局 结构特点 封孔器是由注水喷头、固定螺母管芯、单向阀、膨胀胶管、扣压外套、扣压芯子、注水连接体组成。 水分注入煤体&#xff0c;能湿润和破碎煤体&#xff0c;释放部分瓦斯&#xff0c;降低煤…

TreeMap集合 -java学习笔记

TreeMap TreeMap (由键决定特点):按照键的大小默认升序排序、不重复、无索引特点:不重复、无索引、可排序(按照键的大小默认升序排序&#xff0c;只能对键排序&#xff09;原理:TreeMap跟TreeSet集合的底层原理是一样的&#xff0c;都是基于红黑树实现的排序 TreeSet&#xff…

zabbix分布式部署

基于zabbix-proxy的分布式监控 1.1 分布式监控的作用 1&#xff09;分担 server 的集中式压力&#xff1b; 2&#xff09;解决多机房之间的网络延时问题。 1.2 数据流向 agent --> proxy --> server 1.3 构成组件 zabbix-server&#xff1a;整个监控体系中最核心的组…

Mudbox 2025新版中文---数字雕刻与纹理绘画新境界

Mudbox 2025是一款功能强大的3D建模软件&#xff0c;以其卓越的建模能力和高效的创作工具而备受瞩目。它支持纹理烘烤、三维层、多分辨率网格编辑等功能&#xff0c;为用户提供了直观且易于操作的用户界面。 Mudbox 2025新版中文下载 功能特色&#xff1a; 强大的建模与雕刻能…

PaddleOCR环境搭建、模型训练、推理、部署全流程(Ubuntu系统)

OCR场景应用集合&#xff1a;包含数码管、液晶屏、车牌、高精度SVTR模型、手写体识别等9个垂类模型&#xff0c;覆盖通用&#xff0c;制造、金融、交通行业的主要OCR垂类应用。 ​ 一、PaddleOCR环境搭建 ​ conda create -n ppocr python3.8​conda activate ppocr 进入paddle…

如何在Windows通过eXtplorer结合cpolar搭建个人文件服务器并实现无公网ip远程访问

文章目录 1. 前言2. eXtplorer网站搭建2.1 eXtplorer下载和安装2.2 eXtplorer网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1. 前言 通过互联网传输文件&#xff0c;是互联网最重要的应用之一&#xff0c;无论是…

一文教你学会用群晖NAS配置WebDAV服务结合内网穿透实现公网同步Zotero文献库

文章目录 前言1. Docker 部署 Trfɪk2. 本地访问traefik测试3. Linux 安装cpolar4. 配置Traefik公网访问地址5. 公网远程访问Traefik6. 固定Traefik公网地址 前言 Trfɪk 是一个云原生的新型的 HTTP 反向代理、负载均衡软件&#xff0c;能轻易的部署微服务。它支持多种后端 (D…

Nuxt3(路由)

说明 Nuxt的核心功能之一是文件系统路由。pages/目录中的每个Vue文件都会创建一个相应的URL&#xff08;或路由&#xff09;&#xff0c;用于显示文件的内容。通过为每个页面使用动态导入&#xff0c;Nuxt利用代码分割来仅加载所需路由的最小量JavaScript。 简单来说&#xf…

金三银四-探秘银行科技部:稳定职业背后的挑战 | 不敢跳槽啦 | 好慌

小伙伴们好&#xff0c;我是「 行走的程序喵」&#xff0c;感谢您阅读本文&#xff0c;欢迎三连~ &#x1f63b; 【Java基础】专栏&#xff0c;Java基础知识全面详解&#xff1a;&#x1f449;点击直达 &#x1f431; 【Mybatis框架】专栏&#xff0c;入门到基于XML的配置、以…

【Java程序设计】【C00344】基于Springboot的船舶维保管理系统(有论文)

基于Springboot的船舶维保管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 项目获取 &#x1f345;文末点击卡片获取源码&#x1f345; 开发环境 运行环境&#xff1a;推荐jdk1.8&#xff1b; 开发工具&#xff1a;eclipse以及i…

印度尼西亚国家出口发展局局长一行莅临锐捷网络,共话数字经济未来

第四届中国跨境电商交易会举办期间,印度尼西亚国家出口发展局局长迪迪苏梅迪一行莅临锐捷网络参观交流,宣传推介印度尼西亚市场资源,挖掘中印尼双方企业合作机遇。福州市商务局副局长潘文等领导共同参与活动。锐捷网络副总裁、数据中心事业部总经理林东豪接待。 印度尼西亚国家…

T-Mobile紫卡激活(Ultra)

https://my.ultramobile.com/paygo/activation 人工智能学习网站&#xff1a; https://chat.xutongbao.top

Nginx 编译安装【CentOS 7】

1. 前言 本文使用的操作系统&#xff1a; 名称描述Oracle VM VirtualBox虚拟机软件CentOS-7-x86_64-Minimal-2009.isoCentOS 7.9 最小化安装镜像文件 操作系统信息如下所示 cat /etc/redhat-release 2. 源码包 进入 nginx 官网&#xff1a;https://nginx.org&#xff0c;查看…

MySQL B树 和B+数据的区别

MySQL B树 和B数据的区别 树分类&#xff1a;二叉树完全二叉树满二叉树堆红黑树 B树B树 首先我们搞清楚数据结构中的 树这个概念 树 分类&#xff1a; 二叉树 限定每个节点的子节点最多只有2个子节点&#xff0c;且有左右之分。完全二叉树 满二叉树 堆 红黑树 B树 B树 …

深度学习故障诊断实战 | 数据预处理之基于滑动窗的数据样本增强

前言 本期给大家分享介绍如何基于滑动窗方法进行数据样本增强 背景 深度学习模型训练需要大量的样本。在故障诊断领域&#xff0c;每个类别大都会达到300个样本。但是在实际公开数据集中&#xff0c;以CWRU数据集为例&#xff0c;每个类别只有24组数据&#xff0c;这明显是不…

拓扑排序_和邻接表

首先认识邻接表,两种写法一种原始写法相当复杂,一种二维vector写法稍简单,邻接表,意思就是,该节点的下一个节点有哪些. 首先来看原始写法,记住下面这张图 可以看到这就是原始的邻接表,我们需要三个数组,终点数组e[],上一条边的索引位置fr[],和辅助数组h[],h[i]表示上一条i为起…

【面试经典150 | 】最长递增子序列

文章目录 Tag题目来源解题思路方法一&#xff1a;动态规划 写在最后 Tag 【动态规划】【数组】 题目来源 300. 最长递增子序列 解题思路 方法一&#xff1a;动态规划 定义状态 dp[i] 表示以位置 i 对应整数为末尾的最长递增子序列的长度。 状态转移 我们从小到大计算 dp…