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

React18快速入门教程

项目流程

在这里插入图片描述

开发流程

在这里插入图片描述

技术选型

在这里插入图片描述

创建项目

在这里插入图片描述

执行命令:

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,// 是否使用tabuseTabs: 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 = truereturn (<><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

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C HTML格式解析与生成
  • 浅谈Kafka(二)
  • EmguCV学习笔记 VB.Net 第5章 图像变换
  • 【机器学习】 1. 总览介绍
  • 开源大屏设计工具DataRoom
  • Elasticsearch:使用 ELSER 进行语义搜索 - sparse_vector
  • 在pytorch中TensorBoard的使用
  • OpenCV c++ 实现图像马赛克效果
  • Magenta——利用深度学习生成音乐和艺术内容
  • 基于STM32的温湿度采集设计
  • npm install` 报错
  • 【软件测试面试题】WEB功能测试(持续更新)
  • 黑神话:悟空-配置推荐
  • catvod、TVBox源的解析过程分析和Spider参数覆盖问题解决
  • 【计算机网络】网络基础
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 2017届校招提前批面试回顾
  • conda常用的命令
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • es6--symbol
  • Git学习与使用心得(1)—— 初始化
  • gops —— Go 程序诊断分析工具
  • node.js
  • php的插入排序,通过双层for循环
  • redis学习笔记(三):列表、集合、有序集合
  • SOFAMosn配置模型
  • uni-app项目数字滚动
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 从setTimeout-setInterval看JS线程
  • 电商搜索引擎的架构设计和性能优化
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 批量截取pdf文件
  • 时间复杂度与空间复杂度分析
  • 王永庆:技术创新改变教育未来
  • 网络应用优化——时延与带宽
  • 物联网链路协议
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 用Visual Studio开发以太坊智能合约
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (done) 两个矩阵 “相似” 是什么意思?
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (超详细)语音信号处理之特征提取
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (九)信息融合方式简介
  • (算法)N皇后问题
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .NET 解决重复提交问题