React18快速入门教程

news2024/9/22 9:57:33

项目流程

在这里插入图片描述

开发流程

在这里插入图片描述

技术选型

在这里插入图片描述

创建项目

在这里插入图片描述

执行命令:

pnpm create vite

项目配置

在这里插入图片描述

  • editorconfig:用于配置编辑器,实现使用不同的编辑器打开效果是相同的
  • 包配置:主要用于配置国内源
  • eslint配置:主要用于配置语法规则
  • prettier:主要用于配置代码格式

使用Github管理项目

在这里插入图片描述

Github的项目开源地址如下:https://github.com/zhangdapeng520/zdpreact_antd_admin

使用pnpm创建React项目

在终端执行:

pnpm create vite
  • 项目名:pc_admin
  • 框架:React
  • 语言:TypeScript

安装依赖:

pnpm i

在这里插入图片描述

使用webstorm打开并配置启动项,这个在之前vue的一些教程中经常讲到,就不赘述了。
在这里插入图片描述

浏览器访问:http://localhost:5173/
在这里插入图片描述

增加编辑器配置

.editorconfig

# 参考文档:https://editorconfig.org
# 根路径
root = true

# 对所有文件生效
[*]
# 文件的编码
charset = utf-8
# 使用空格缩进,默认是使用 tab
indent_style = space
# 缩进几个空格,默认是 4
indent_size = 2
# 结尾换行符
end_of_line = lf
# 在末尾追加一个空行
insert_final_newline = true
# 如果末尾有多余的空格,则自动去掉
trim_trailing_whitespace = true

整合prettier

在这里插入图片描述

在这里插入图片描述

安装:

pnpm add prettier -D

添加 .prettierrc.cjs:
在这里插入图片描述

module.exports = {
  // 每行最大字符数量,超过换行
  printWidth: 88,
  // 是否使用tab
  useTabs: false,
  // 缩进
  tabWidth: 2,
  // 去除结尾分号
  semi: false,
  // 使用单引号
  singleQuote: false,
  // 在jsx中使用单引号
  jsxSingleQuote: false,
  // 箭头函数如果只有一个参数,自动去掉括号
  arrowParens: "avoid",
  // 对象,数组括号与文字间空格
  bracketSpacing: true,
  // 尾随逗号
  trailingComma: "none"
}

webstorm配置prettier格式化:
在这里插入图片描述

eslint规则讲解

import js from "@eslint/js"
import globals from "globals"
import reactHooks from "eslint-plugin-react-hooks"
import reactRefresh from "eslint-plugin-react-refresh"
import tseslint from "typescript-eslint"

export default tseslint.config(
  { ignores: ["dist"] },
  {
    // 继承推荐的配置
    extends: [js.configs.recommended, ...tseslint.configs.recommended],
    // 在哪些文件中生效
    files: ["**/*.{ts,tsx}"],
    languageOptions: {
      ecmaVersion: 2020,
      globals: globals.browser
    },
    plugins: {
      "react-hooks": reactHooks,
      "react-refresh": reactRefresh
    },
    /**
     * 自定义的规则
     * off 或 0 :关闭规则
     * warn 或 1:打开的规则作为警告,不影响代码执行
     * error 或 2:打开的规则作为错误,代码不能执行,界面报错
     * */
    rules: {
      ...reactHooks.configs.recommended.rules,
      "react-refresh/only-export-components": ["warn", { allowConstantExport: true }],
      "no-console": ["error", { allowConsole: false }], // 禁止使用console
      "no-unused-vars": ["error", { allowUnusedVars: false }], // 禁止定义未使用的变量
      "no-debugger": "error", // 禁止使用debugger
      "no-var": "error" // 禁止使用var,要求使用let或者const
    }
  }
)

vite配置

配置别名:

pnpm add @types/node -D

vite.config.js

import { defineConfig } from "vite"
import react from "@vitejs/plugin-react"
import path from "path"

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [react()],
  resolve: {
    alias: {
      "@": path.resolve(__dirname, "src")
    }
  },
  server: {
    open: true
  }
})

配置vite实现代理和跨域

import { defineConfig } from "vite"
import react from "@vitejs/plugin-react"
import path from "path"

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [react()],
  resolve: {
    alias: {
      "@": path.resolve(__dirname, "./src") // 配置src路径别名
    }
  },
  server: {
    open: true, // 启动服务的时候自动打开浏览器
    host: "127.0.0.1", // 启动的主机
    port: 5173, // 端口号
    proxy: {
      "/api": {
        target: "http://127.0.0.1:8888", // 后端的接口地址
        changeOrigin: true, // 跨域
        rewrite: path => path.replace(/^\/api/, "") // 重写api路径
      }
    }
  }
})

vue和react的对比

在这里插入图片描述

什么是JSX?

在js里面写html的语法:
在这里插入图片描述

JSX渲染变量

function App() {
  const message = "你好,React18"
  return (
    <>
      <div>{message}</div>
    </>
  )
}

export default App

在这里插入图片描述

JSX 渲染节点

function App() {
  const message = <h1 style={{ color: "red" }}>你好,React18</h1>
  return (
    <>
      <div>{message}</div>
    </>
  )
}

export default App

在这里插入图片描述

JSX 实现条件渲染

假设登录用户是管理员,就打印你好管理员,否则打印你好普通用户。

function App() {
  const isAdmin = true
  return (
    <>
      <div>{isAdmin ? <span>你好管理员</span> : <span>你好普通用户</span>}</div>
    </>
  )
}

export default App

在这里插入图片描述

JSX 渲染数组

比如有一个用户列表,张三,李四王五,将这个用户列表中的每个用户的名字打印出来。

function App() {
  const users = ["张三", "李四", "王五"]
  return (
    <>
      <div>
        {users.map((v, k) => {
          return <h3 key={k}>{v}</h3>
        })}
      </div>
    </>
  )
}

export default App

在这里插入图片描述

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

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

相关文章

leetCode - - - 二分查找

目录 1.二分查找&#xff08;Leetcode 704&#xff09; 2.搜索插入位置&#xff08; LeetCode 35 &#xff09; 3.寻找峰值&#xff08;LeetCode 162&#xff09; 4.旋转数组的最小数字&#xff08;BM21&#xff09; 5.总结 1.二分查找&#xff08;Leetcode 704&#xff0…

基于Python的机器学习系列(7):多元逻辑回归

在本篇博文中&#xff0c;我们将探讨多元逻辑回归&#xff0c;它是一种扩展的逻辑回归方法&#xff0c;适用于分类数量超过两个的场景。与二元逻辑回归不同&#xff0c;多元逻辑回归使用Softmax函数将多个类别的概率输出映射到[0, 1]范围内&#xff0c;并确保所有类别的概率和为…

利用漏洞实现 Outlook 的 RCE:第一部分

概述 2023 年 3月补丁星期二解决的漏洞中,有一个是Outlook 的一个严重漏洞,编号为CVE-2023-23397,该漏洞被 Forest Blizzard 在野利用,微软已将其确定为俄罗斯国家支持的威胁行为者。2023 年 12 月,微软与波兰网络司令部 (DKWOC) 联合发布消息称,他们发现同一威胁行为者…

Debug-023-Document.createElement()的使用

Document.createElement() document.createElement()是在对象中创建一个对象&#xff0c;要与appendChild() 或 insertBefore()方法联合使用。 appendChild() 方法在节点的子节点列表末添加新的子节点。 insertBefore() 方法在节点的子节点列表任意位置插入新的节点。 用途举…

Linux -- git

1 啥是git git是一个代码的历史版本管理工具&#xff0c;通过用树形结构管理一个代码版本可以快速实现回滚等操作 1.1 git基本概念 工作区&#xff08;Working Directory/Working Tree&#xff09;&#xff1a; 这是你当前正在处理项目文件的地方。你可以在工作区中创建、修改…

非关系型数据库MongoDB(文档型数据库)介绍与使用实例

MongoDB介绍 MongoDB是一种开源的文档型数据库管理系统&#xff0c;它使用类似于JSON的BSON格式&#xff08;Binary JSON&#xff09;来存储数据。与传统关系型数据库不同&#xff0c;MongoDB不使用表和行的结构&#xff0c;而是采用集合&#xff08;Collection&#xff09;(My…

漏洞发现——漏洞扫描工具的对比

本帖字的实验环境是来自学校的靶机 文章目录 Xray介绍安装教程使用教程主动扫描单个url扫描批量扫描 被动扫描联合游览器联合burpsuite Awvs介绍安装教程使用教程联合xary三者联合bp和xray Goby介绍安装教程使用教程 Afrog介绍安装教程使用教程 Vulmap介绍安装教程使用教程 Poc…

SpringMVC核心机制环境搭建

文章目录 1.SpringMVC执行流程1.基础流程图2.详细流程图 2.安装Tomcat1.下载2.解压到任意目录即可3.IDEA配置Tomcat1.配置Deloyment2.配置Server 3.创建maven项目1.创建sun-springmvc模块&#xff08;webapp&#xff09;2.查看是否被父模块管理3.pom.xml引入依赖4.目录5.SunDis…

电子电气架构--- 智能汽车电子架构的核心诉求

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消耗你的人和事&#xff0c;多看一眼都是你的不…

Android点击和触摸音量小的问题(问题追踪)

有客户反馈&#xff1a;A14触摸声音没有 于是乎&#xff0c;追踪setting打开触摸声音的代码&#xff1a; Overridepublic boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {if (preference mVibrateWhenRinging) {Settings.System…

Linux | 进程优先级进程的环境变量

文章目录 进程概念4、进程优先级4.1基本概念4.2查看系统进程4.2.1 ps -l4.2.2 PRI & NI 4.3用top命令更改已存在进程的nice&#xff1a; 5、环境变量5.1常见环境变量5.2查看环境变量5.3测试PATH配置环境变量 5.4代码中获取环境变量5.4代码中获取环境变量 进程概念 4、进程…

RFID 智慧城市书房:开启智慧阅读新时代

在当今数字化、智能化的时代&#xff0c;人们对于阅读的需求和体验也在不断升级。RFID 智慧城市书房的出现&#xff0c;为满足人们对高品质阅读环境的追求提供了全新的途径。 一、RFID 技术&#xff1a;智慧城市书房的核心支撑 RFID&#xff0c;即射频识别技术&#xff0c;是一…

DDS IP实现啁啾信号

简介 DDS&#xff08;Direct Digital Synthesizer&#xff09;即数字合成器&#xff0c;是一种新型的频率合成技术&#xff0c;具有低成本、低功耗、高分辨率、频率转换时间短、相位连续性好等优点&#xff0c;对数字信号处理及其硬件实现有着很重要的作用。DDS 的基本…

18945 小团的配送团队

### 思路 1. **建图**&#xff1a;将订单视为图的节点&#xff0c;已知关系视为图的边&#xff0c;构建无向图。 2. **连通分量**&#xff1a;使用深度优先搜索&#xff08;DFS&#xff09;或广度优先搜索&#xff08;BFS&#xff09;找到图中的所有连通分量。 3. **排序**&…

探索人工智能的未来:埃里克·施密特2024斯坦福大学分享六

代理与文本生成模型的未来展望 您认为明年代理或文本生成模型会出现通货膨胀点吗&#xff1f; 不&#xff0c;不会。 我听到了类似的观点&#xff0c;尤其是埃里克科维茨的看法。他有一个很好的方式来阐述这三个趋势。虽然我之前也听说过这些趋势&#xff0c;但将它们整合起…

C语言破墙镐对称飞迷宫

目录 开头程序程序的流程图程序游玩的效果(gif)结尾 开头 大家好&#xff0c;我叫这是我58。 程序 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> #include <Windows.h> enum WASD {W,A,S,D }; void printmaze(const char s…

【CTF Web】CTFShow cookie泄露 Writeup(cookie泄露+URL解码)

cookie泄露 10 cookie 只是一块饼干&#xff0c;不能存放任何隐私数据 解法 按 F12 打开开发者工具&#xff0c;点击网络&#xff0c;刷新页面。 flag 在 响应标头的 Set-Cookie 中。 用 URL 解码工具转换。 Flag ctfshow{8483acdb-a677-4c77-8aff-438d44ff1a3e}声明 本博客…

论文翻译软件哪个好用?如何将论文转化?

在学术海洋里遨游&#xff0c;每一篇论文都是思想的灯塔。 但当这座灯塔用外语构建&#xff0c;如何让它在中国读者面前同样熠熠生辉&#xff1f;别担心&#xff0c;把论文翻译成中文的旅程&#xff0c;不仅可以轻松启航&#xff0c;还能优雅靠岸&#xff01; 不知道怎么把论…

【Android笔记】Android APK编译打包流程

前言 本文将介绍Android从一个项目打包成APK的过程&#xff0c;其中涉及Android Java和Kotlin文件、资源文件、清单文件、依赖jar包和so库等在打包过程中处理。 步骤 总体的打包流程如下图&#xff0c;下面就介绍下详细的打包步骤。 1、将aidl文件编译成java文件 在构建过程中…

OpenAI API VBA function returns #Value! but MsgBox displays response

题意&#xff1a;“OpenAI API VBA 函数返回 #Value!&#xff0c;但 MsgBox 显示响应” 问题背景&#xff1a; I am trying to integrate the OpenAI API into Excel. The http request to OpenAI chat completion works correctly and the response is OK. When I display it…