Day 1: React基础概念

学习时间:6-8小时
适合对象:有Vue3经验的开发者

今日目标

  • ✅ 掌握React项目创建和结构
  • ✅ 熟练使用JSX语法
  • ✅ 理解函数组件和Props
  • ✅ 实现条件渲染和列表渲染
  • ✅ 完成第一个React项目

上午课程(3-4小时)

1️⃣ React简介和环境搭建(1小时)

React是什么?

React是一个用于构建用户界面的JavaScript库,由Facebook开发。核心特点:

  • 声明式:描述UI应该是什么样,React负责如何实现
  • 组件化:UI由独立、可复用的组件构成
  • 一次学习,随处编写:可用于Web、移动端、桌面端
React vs Vue 设计思想对比
特性VueReact
模板语法HTML模板 + 指令JSX (JavaScript + XML)
响应式自动依赖追踪手动管理状态
学习曲线平缓稍陡(需要深入JS)
灵活性中等很高(一切皆JS)
官方路由/状态管理有(Vue Router/Pinia)社区方案为主
创建你的第一个React项目

使用Vite创建项目(比Create React App更快):

# 创建项目
npm create vite@latest my-react-app -- --template react
# 进入项目目录
cd my-react-app
# 安装依赖
npm install
# 启动开发服务器
npm run dev

项目创建过程

npm create vite@latest my-react-app -- --template react
Need to install the following packages:
create-vite@8.0.1
Ok to proceed? (y) y
> npx
> create-vite my-react-app --template react
|
o  Use rolldown-vite (Experimental)?:
|  No
|
o  Install with npm and start now?
|  Yes
|
o  Scaffolding project in C:\MyLearn\my-react-app...
|
o  Installing dependencies with npm...
added 153 packages, and audited 154 packages in 17s
32 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
|
o  Starting dev server...
> my-react-app@0.0.0 dev
> vite
VITE v7.1.7  ready in 374 ms
➜  Local:   http://localhost:5173/
➜  Network: use --host to expose
➜  press h + enter to show help

访问 http://localhost:5173/

QQ_1759186937549

项目结构解读
my-react-app/
├── node_modules/       # 依赖包
├── public/             # 静态资源
├── src/                # 源代码目录
│   ├── assets/         # 资源文件(图片、样式等)
│   ├── App.jsx         # 根组件
│   ├── App.css         # 根组件样式
│   ├── main.jsx        # 入口文件(类似Vue的main.js)
│   └── index.css       # 全局样式
├── index.html          # HTML模板
├── package.json        # 项目配置
└── vite.config.js      # Vite配置

实际初始化后,项目结构截图

QQ_1759187131847

关键文件解析

main.jsx(入口文件):

/**
 * 从 react 包中导入 StrictMode 组件
 * StrictMode 是 React 的严格模式组件,类似于 Vue 3 的开发模式检查
 * 它会在【开发环境】下进行额外的检查和警告,帮助你发现潜在问题
 * 不会渲染任何可见的 UI,也不会影响生产构建
 */
import { StrictMode } from 'react'
/**
 * 从 react-dom/client 包中导入 createRoot 方法
 * 这是 React 18 新的渲染 API,类似于 Vue 3 的 createApp()
 * 用于创建一个 React 根节点,然后将组件渲染到 DOM 中
 *
 * 对比 Vue 3:
 * Vue 3: createApp(App).mount('#app')
 * React: createRoot(document.getElementById('root')).render()
 */
import { createRoot } from 'react-dom/client'
/**
 * 导入全局样式文件
 * 类似于 Vue 3 中在 main.js 里 import './style.css'
 */
import './index.css'
/**
 * 导入根组件 App
 * 类似于 Vue 3 中的 import App from './App.vue'
 * 注意:React 组件文件通常使用 .jsx 或 .js 扩展名
 */
import App from './App.jsx'
/**
 * React 应用的启动流程(链式调用):
 *
 * 1. createRoot() - 创建 React 根节点
 *    参数:DOM 元素,这里获取 id 为 'root' 的 div
 *
 * 2. .render() - 将组件渲染到根节点
 *    参数:要渲染的 React 元素(JSX)
 *
 * 对比 Vue 3 的启动方式:
 *
 * Vue 3:
 * createApp(App).mount('#app')
 *
 * React 18:
 * createRoot(document.getElementById('root')).render()
 *
 * 主要区别:
 * - Vue 使用字符串选择器 '#app'
 * - React 需要传入实际的 DOM 元素对象
 */
createRoot(document.getElementById('root')).render(
  /**
   * StrictMode 包裹根组件
   * 在开发模式下会:
   * 1. 识别不安全的生命周期方法
   * 2. 检测意外的副作用
   * 3. 检测过时的 API
   * 4. 组件会渲染两次(仅开发模式),帮助发现副作用问题
   *
   * 类似于 Vue 3 开发工具的警告功能,但更严格
   */
  
    {/*
      渲染 App 根组件
      JSX 语法:类似于 Vue 的模板语法,但实际上是 JavaScript
       等同于 React.createElement(App)
      对比:
      Vue 3 模板: 
      React JSX: 
      看起来相同,但 React 的 JSX 需要编译成 JavaScript 函数调用
    */}
    
  ,
)

App.jsx(根组件):

/**
 * 从 react 包中导入 useState Hook
 *
 * Hook 是 React 16.8 引入的新特性,让你在函数组件中使用状态和其他 React 特性
 *
 * 对比 Vue 3:
 * Vue 3 Composition API: import { ref } from 'vue'
 * React Hooks: import { useState } from 'react'
 *
 * 相似点:都是在函数式组件中管理状态
 * 不同点:
 * - Vue 3 使用 ref() 创建响应式数据
 * - React 使用 useState() 创建状态
 */
import { useState } from 'react'
/**
 * 导入图片资源
 *
 * 在 Vite 中,可以直接导入图片文件
 * 导入后得到的是图片的 URL 路径字符串
 *
 * 类似于 Vue 3 中:
 * import logo from './assets/logo.png'
 */
import reactLogo from './assets/react.svg'
import viteLogo from '/vite.svg' // 以 / 开头表示从 public 目录导入
/**
 * 导入组件样式
 * 这个样式只作用于当前组件相关的元素
 */
import './App.css'
/**
 * App 组件 - 函数组件写法
 *
 * React 组件的两种写法:
 * 1. 函数组件(推荐,现代写法)
 * 2. 类组件(旧写法,逐渐被淘汰)
 *
 * 对比 Vue 3:
 *
 * Vue 3 组件:
 * <script setup>
 * import { ref } from 'vue'
 * const count = ref(0)
 * </script>
 *
 * React 函数组件:
 * function App() {
 *   const [count, setCount] = useState(0)
 *   return (...)
 * }
 *
 * 主要区别:
 * - Vue 3 使用 <script setup> 语法糖,代码更简洁
 * - React 需要显式返回 JSX
 * - React 组件名必须大写开头(Pascal命名)
 */
function App() {
  /**
   * useState Hook - 状态管理
   *
   * 语法:const [状态变量, 更新函数] = useState(初始值)
   *
   * useState 返回一个数组,包含两个元素:
   * 1. count - 当前状态值(类似 Vue 的 count.value)
   * 2. setCount - 更新状态的函数(类似 Vue 的 count.value = newValue)
   *
   * 对比 Vue 3:
   *
   * Vue 3:
   * const count = ref(0)           // 创建响应式数据
   * count.value++                  // 修改需要 .value
   *
   * React:
   * const [count, setCount] = useState(0)  // 创建状态
   * setCount(count + 1)            // 通过 setCount 函数修改
   *
   * 重要区别:
   * - Vue 3 的 ref 是响应式对象,直接修改 .value
   * - React 的 state 是不可变的,必须通过 setState 函数更新
   * - React 的状态更新是异步的,可能会合并多次更新
   */
  const [count, setCount] = useState(0)
  /**
   * 返回 JSX (组件的渲染内容)
   *
   * JSX 是 JavaScript XML 的缩写,是 React 的模板语法
   * 看起来像 HTML,但实际是 JavaScript 表达式
   *
   * 对比 Vue 3:
   * Vue 3 使用 
posted on 2025-10-20 20:24  ycfenxi  阅读(1)  评论(0)    收藏  举报