之前有学习过 React,Tailwind CSS 和 Next.js,也用它们写过一些项目,但是总是感觉不系统不规范,因此重新学习并记录完整笔记,持续更新中…
React Course
Basic Demo
Question
什么是 JSX
怎么使用 useState,怎么改变值,怎么计数?
怎么使用 useEffect,react 的 hook 怎么理解,怎么使用。
怎么 fetch API,怎么将 API 的数据转 json
怎么连接函数与 button 事件
HTML 中代表什么?
怎么使用 react 的函数组件,如何传值
如何实现纯 JavaScript 和 Pure React(不借助框架)实现?
Code
常规 React 版本
1 | import { useEffect, useState } from "react"; |
纯 JavaScript 版本
1 |
|
Pure React 版本
1 |
|
Fundemental
Document
Official Doc
unofficial Doc
Tools or Framework
CRA & Vite
需要好好搜集资料总结一下。。。
CRA
好处:集成了 ESLint、Prettier、Jest 等配置
坏处:缓慢而过时
适用于教程使用,不适合现实中大型应用使用
Vite
好处:快
坏处:需要手动配置很多,比如 ESLint、Prettier、Jest 等
适用于现实中前端开发使用
Next.js & Remix
需要好好搜集资料总结一下。。。
使用 CRA 创建第一个 project
在 terminal 运行下面的命令,会自动创建一个文件夹名为:your-project-name
1 | npx create-react-app your-project-name |
打开该项目,会发现包含目录结构已被初始化:(包含已安装的依赖、JS 文件、HTML 文件,自动生成的首页)
此时可以直接输入npm start 运行该项目,会自动跳转浏览器打开初始页面,如下图
Basic Javascript
解构 Object 和 Array
1 | const books = { |
向 Object 和 Array 添加数据,使用 ... 运算符
1 | const updateBook = { ...books, newDate: "2025-04-25" }; |
字符串中写 js 代码
1 | summary = `${title} is a good book, which is published in ${ |
三元运算符
箭头函数
1 | const getYear = (str) => str.split("-")[0]; |
逻辑运算符 ??
空值合并运算符(??),是 || 运算符的一个特例
|| 运算符当左侧是 0,””, null,undefiened 时返回右侧数据
?? 运算符当左侧是 null, undefiened 时返回右侧数据,不处理 0 和空字符串
Optional chain
可选链运算符(?.),类似于判空操作
Functional Array Method
这些方法不会改变原有 array,而是返回一个新的 array
Map - 根据条件改变值
1 | const x = [1, 2, 3, 4, 5].map((el) => el * 2); |
Filter - 根据条件筛选,不改变原有值
1 | const x = [1, 2, 3, 4, 5].filter((el) => el < 5).filter((el) => el % 2 == 0); |
Reduce - 根据初始值和逻辑进行运算
1 | x = [1, 2, 3, 4, 5].reduce((sum, el) => sum + el, 1); // 这里的 1 是 sum 的初始值 |
Sort - 根据条件进行排序
1 | x = [3, 4, 1, 6, 2]; |
删除/更新 Array 且不改变原有 Array
删除使用 filter
更新使用 map
1 | // 1) Add book object to array |
Async Method
下面两种写法是等价的
Promise - then
1 | hotels = fetch("https://api.trillobe.com/api/hotels").then((res) => res.json()); |
async - await
1 | async function getHotel() { |
Basic react
index.js,webpack 的入口文件是 index.js,所以我们在写 react 项目时,使用它作为入口文件。
Render root component
1 | // render react v18,现在应该已经过时了 |
StrictMode
StrictMode,仅在开发环境下运行,这个组件会额外重新渲染一次,额外重新运行一次 Effect,额外重新运行一次 refs 回调,检查是否使用了已弃用的 API
1 | import { StrictMode } from 'react'; |
Debug
修改代码保存后,浏览器没有显示/报错
- Check 应用是否在运行/启动状态
- 重启应用,重新使用 npm start 启动
- 点击浏览器中刷新按钮
- vs code 中观察 terminal,浏览器中观察 dev tools - console
- 查看浏览器中报错信息,找到问题点,使用 google/stackoverflow 查找解决办法
- 使用 eslint,查看 vscode 中 problem tab,针对问题修改
- 如果以上都尝试后,没有修复,说明代码有问题,如果有源代码,比如使用 git 的 diff 进行逐行比对,修正 bug