React新手小白:如何入门 React 响应式交互与 JSX 艺术

0 阅读7分钟

一 什么是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”。

  1. 当状态发生变化时,React 先更新虚拟 DOM。
  2. 通过 Diff 算法 对比新旧虚拟 DOM 的差异。
  3. 仅将真正发生变化的部分更新到真实网页上(这一过程称为 Reconciliation)。

JSX 语法

React 引入了 JSX(JavaScript XML),允许你在 JavaScript 代码中直接编写类似 HTML 的结构。这使得 UI 逻辑与标记语言高度耦合,代码直观且易于维护。

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)几乎是瞬间完成。

步骤:

  1. 打开终端,输入以下命令:

    npm create vite
    
  2. 按照提示进行选择:

    • Select a framework: 选择 React
    • Select a variant: 选择 JavaScriptTypeScript(根据情况选择语言)
  3. 进入目录并启动:

    cd my-react-app
    npm install
    npm run dev
    
  4. 得到网址: 运行上述代码后,你会在终端得到一个类似于http://localhost:5173 网址,这样你就成功运行了你的第一个React项目 项目结构如下图所展示:

df1b4f4bbd30dbe57ece32553b1a07d5.png

三: React 的核心用法。

1:理解“挂载” —— 应用的起点

每个 React 应用都有一个入口文件(通常是 main.jsx),它的任务是将我们写的 React 组件“挂载”到真实的 HTML 页面上。

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 逻辑封装在一起,完成独立的功能。

我们可以将页面拆分成多个子组件,然后在根组件中组合它们:

// 定义子组件:头部
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. 定义与更新状态

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 函数)来控制界面的显示:

{/* 列表渲染:记得给每个子项添加唯一的 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() 方法循环数据,且每个子项必须提供唯一的 keytodos.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 让数据驱动视图,数组返回的状态值与更新函数是你操控页面的唯一魔法。
  • 组件即模块:像搭积木一样,将复杂的页面拆解成 HeaderArticlesCheckin 等独立单元,这会让你从“搬砖工”晋升为“包工头”。
  • JSX 即桥梁:这种将 XML 融入 JS 的语法,是你描述用户界面最直观、最高效的方式。

2. 给新手的进阶建议

  • 拥抱 Vite 的速度:不要在环境配置上浪费太多时间,利用 Vite 的极速热更新去快速验证你的每一个奇思妙想。
  • 尊重单向数据流:数据总是从父组件流向子组件,这种“长幼有序”的传递方式会让你的代码逻辑极其清晰。
  • 报错是你的导师:React 的报错信息往往非常直观,它们不是阻碍,而是指引你优化代码的地图。

3. 最后的行动指南

与其在文档里反复徘徊,不如在编辑器里反复横跳。

  • 多拆分:如果一个组件超过了 100 行,试着把它拆成两个。
  • 多联想:看到任何一个网站,试着在脑海中用组件树去拆解它。
  • 多实践:React 的魅力不在于“看懂”,而在于当你写下 setName 时,页面如你所愿跳动的那一瞬间。

多敲代码 多学知识 多上手实践 我相信你我都能做得更好!