一 什么是React?? 他是基于什么的? 学了它有什么用呢??
1. 核心定义:声明式与组件化
React 的核心定位是 "用于构建用户界面的 JavaScript 库" 。它主要关注 MVC 架构中的 V(View,视图层) 。
- 声明式编程 (Declarative): 在 React 中,你只需要描述界面在某种"状态"下应该长什么样,而不需要手动操作 DOM 去更新界面。当数据变动时,React 会自动处理界面的高效更新。
- 组件化 (Component-Based): 这是 React 的灵魂。你可以将复杂的 UI 拆分成一个个独立、可复用的"组件"(Component)。每个组件拥有自己的逻辑和样式,最终像搭积木一样拼成完整的应用。
完整项目链接:gitee.com/hong-strong...
2. 三大核心技术支柱
虚拟 DOM (Virtual DOM)
传统的网页操作(真实 DOM)非常昂贵且缓慢。React 在内存中维护了一份 UI 的轻量级副本,即"虚拟 DOM"。
- 当状态发生变化时,React 先更新虚拟 DOM。
- 通过 Diff 算法 对比新旧虚拟 DOM 的差异。
- 仅将真正发生变化的部分更新到真实网页上(这一过程称为 Reconciliation)。
JSX 语法
React 引入了 JSX(JavaScript XML),允许你在 JavaScript 代码中直接编写类似 HTML 的结构。这使得 UI 逻辑与标记语言高度耦合,代码直观且易于维护。
JavaScript
javascript
function Welcome() {
return <h1>Hello, React!</h1>;
}
单向数据流 (One-Way Data Flow)
在 React 中,数据总是从父组件通过 props 流向子组件。这种单向的数据流动让应用的逻辑变得可预测,调试时也更容易追踪数据的源头。
3. 为什么 React 如此受欢迎?
- 极高的性能: 得益于虚拟 DOM 和优秀的渲染机制。
- 强大的生态: 拥有庞大的开源社区,无论是状态管理(Redux, Zustand)、路由(React Router),还是 UI 组件库(Ant Design, MUI),都能找到成熟的方案。
- 跨平台能力: 学习了 React 之后,你可以通过 React Native 构建原生移动应用(iOS/Android),实现"一次学习,随处编写"。
- Hooks 革命: 自 React 16.8 引入 Hooks 以来,函数式组件(Functional Components)成为了主流,极大地简化了状态管理和副作用处理的复杂性。
二 那作为一个小白 如何初始化一个react项目呢?
我这边选择使用的是Vite,因为 Vite 是目前前端工程化的首选工具。它启动极快,热更新(HMR)几乎是瞬间完成。
步骤:
-
打开终端,输入以下命令:
luanpm create vite -
按照提示进行选择:
- Select a framework: 选择
React - Select a variant: 选择
JavaScript或TypeScript(根据情况选择语言)
- Select a framework: 选择
-
进入目录并启动:
arduinocd my-react-app npm install npm run dev -
得到网址: 运行上述代码后,你会在终端得到一个类似于http://localhost:5173 网址,这样你就成功运行了你的第一个React项目 项目结构如下图所展示:

三: React 的核心用法。
1:理解"挂载" ------ 应用的起点
每个 React 应用都有一个入口文件(通常是 main.jsx),它的任务是将我们写的 React 组件"挂载"到真实的 HTML 页面上。
javascript
import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import App from './App.jsx'
// 使用 createRoot 找到 HTML 中的 root 节点,并将根组件 <App /> 渲染进去
createRoot(document.getElementById('root')).render(
<StrictMode>
<App />
</StrictMode>,
)
2:组件化开发 ------ 像搭积木一样写网页
在 React 中,函数就是组件。组件是开发的基本单位,它将 HTML、CSS 和 JS 逻辑封装在一起,完成独立的功能。
我们可以将页面拆分成多个子组件,然后在根组件中组合它们:
javascript
// 定义子组件:头部
function JuejinHeader() {
return (
<header><h1>掘金首页</h1></header>
)
}
// 定义子组件:列表
const Articles = () => <div>文章列表内容</div>;
// 在 App 根组件中组合它们
function App() {
return (
<div>
<JuejinHeader />
<main>
<Articles />
</main>
</div>
)
}
3:掌握 JSX ------ 在 JS 中书写 UI
JSX(XML in JS)是 React 的模板语法,它让我们能在 JavaScript 里直接写 HTML 结构。
- 语法糖 :JSX 最终会被转化为
createElement渲染函数。 - 规则 :JSX 最外层只能有一个根元素(可以使用空标签
<></>作为文档碎片)。 - 属性名 :由于
class是 JS 关键字,在 JSX 中定义类名要使用className。
第四步:响应式状态 ------ 让页面"动"起来
React 的核心特性之一是响应式(Reactive) 。我们使用 useState 来定义数据状态,当状态改变时,React 会自动更新 UI。
1. 定义与更新状态
javascript
import { useState } from 'react';
function App() {
// name 是状态值,setName 是更新它的函数
const [name, setName] = useState("vue");
// 3秒后自动将 "vue" 改为 "react"
setTimeout(() => {
setName("react");
}, 3000);
return <h1>Hello {name}!</h1>;
}
2. 条件渲染与列表渲染
你可以利用原生 JS 的逻辑(如三元运算符或 map 函数)来控制界面的显示:
css
{/* 列表渲染:记得给每个子项添加唯一的 key */}
<ul>
{todos.map(todo => (
<li key={todo.id}>{todo.title}</li>
))}
</ul>
{/* 条件渲染:登录逻辑切换 */}
{isLoggedIn ? <div>已登录</div> : <div>未登录</div>}
<button onClick={() => setIsLoggedIn(!isLoggedIn)}>
{isLoggedIn ? "退出" : "登录"}
</button>
四 React基本知识总结
| 核心维度 | 知识要点 | 代码示例 / 实现细节 |
|---|---|---|
| 组件定义 | 组件是 React 的基本开发单位,通常表现为返回 JSX 的 JavaScript 函数。 | function App() { return <div>...</div> } |
| JSX 语法 | XML in JS 。一种在 JS 中描述 UI 结构的语法扩展,本质是 createElement 的语法糖。 |
const element = <h2>JSX 语法扩展</h2>; |
| JSX 约束 | 1. 必须有且仅有一个根元素; 2. 标签名大写为组件,小写为原生 HTML。 | return (<> ... </>) (使用 Fragments 文档碎片) |
| 属性命名 | 由于 JS 关键字限制,HTML 的 class 属性需写作 className。 |
<span className="title">...</span> |
| 组件化思维 | 像"搭积木"一样。通过组件树嵌套子组件来构建复杂页面,代替传统的 DOM 树。 | <main> <Articles /> <aside><Checkin /></aside> </main> |
| 响应式状态 | 使用 useState 定义数据。当状态改变时,React 会自动触发界面更新(数据驱动视图)。 |
const [name, setName] = useState("vue"); |
| 列表渲染 | 使用原生 JS 的 .map() 方法循环数据,且每个子项必须提供唯一的 key。 |
todos.map(todo => <li key={todo.id}>{todo.title}</li>) |
| 条件渲染 | 在 JSX 中使用 三元运算符 或逻辑运算符根据状态显示不同的内容。 | {isLoggedIn ? <div>已登录</div> : <div>未登录</div>} |
| 事件处理 | 使用驼峰式命名的属性绑定交互函数(如 onClick)。 |
<button onClick={toggleLogin}>登录</button> |
| 项目挂载 | 应用的入口。使用 createRoot 找到容器并调用 render 挂载根组件。 |
createRoot(document.getElementById('root')).render(<App />) |
总结:欢迎来到 React 的世界
学习React其实不难,只要你登上了这几个台阶,一步一个脚印,视野就会豁然开朗:
"数据是灵魂,组件是肉体,JSX 是灵魂与肉体对话的诗篇。"
你已经掌握了现代前端最强大的武器,请记住这三条锦囊:
1. 核心心法的内化
- 状态即真相 :通过
useState让数据驱动视图,数组返回的状态值与更新函数是你操控页面的唯一魔法。 - 组件即模块 :像搭积木一样,将复杂的页面拆解成
Header、Articles、Checkin等独立单元,这会让你从"搬砖工"晋升为"包工头"。 - JSX 即桥梁:这种将 XML 融入 JS 的语法,是你描述用户界面最直观、最高效的方式。
2. 给新手的进阶建议
- 拥抱 Vite 的速度:不要在环境配置上浪费太多时间,利用 Vite 的极速热更新去快速验证你的每一个奇思妙想。
- 尊重单向数据流:数据总是从父组件流向子组件,这种"长幼有序"的传递方式会让你的代码逻辑极其清晰。
- 报错是你的导师:React 的报错信息往往非常直观,它们不是阻碍,而是指引你优化代码的地图。
3. 最后的行动指南
与其在文档里反复徘徊,不如在编辑器里反复横跳。
- 多拆分:如果一个组件超过了 100 行,试着把它拆成两个。
- 多联想:看到任何一个网站,试着在脑海中用组件树去拆解它。
- 多实践 :React 的魅力不在于"看懂",而在于当你写下
setName时,页面如你所愿跳动的那一瞬间。
多敲代码 多学知识 多上手实践 我相信你我都能做得更好!