React进阶之路:从入门知识到项目实战精通

目录

📌 第一步:学习基础前置知识

1️⃣ HTML & CSS

2️⃣ JavaScript(ES6+)

📌 第二步:搭建 React 开发环境

1️⃣ 安装 Node.js

2️⃣ 使用 Vite 创建 React 项目

📌 第三步:React 核心概念

1️⃣ 组件(Component)

2️⃣ Props(属性)

3️⃣ State(状态管理)

4️⃣ 事件处理

5️⃣ useEffect(副作用)

📌 第四步:搭建简单项目

📌 第五步:React 进阶学习

1️⃣ 组件通信

2️⃣ React 路由(React Router)

3️⃣ 全局状态管理

4️⃣ 数据请求(API 调用)

📌 第六步:实战项目


React从 0-1 学习 React 开发,建议按照以下步骤系统学习:


📌 第一步:学习基础前置知识

1️⃣ HTML & CSS

  • 了解 HTML 结构divspanbuttonform 等)

  • 掌握 CSS 选择器、Flexbox、Grid、响应式设计

  • 学习 CSS 预处理器(SCSS)和 CSS 框架(Tailwind CSS)

2️⃣ JavaScript(ES6+)

React 依赖 JavaScript,掌握以下核心概念:

  • 变量声明:let / const

  • 箭头函数const sum = (a, b) => a + b

  • 解构赋值const { name, age } = person

  • 展开运算符const arr2 = [...arr1, 4]

  • 模板字符串console.log(Hello, ${name})

  • 数组方法map()filter()reduce()

  • Promise & async/await

  • 模块化import / export


📌 第二步:搭建 React 开发环境

1️⃣ 安装 Node.js

Node.js 官网 下载并安装,建议选择 LTS 版本。

2️⃣ 使用 Vite 创建 React 项目

相比 create-react-app,Vite 更快更轻量,推荐使用:

npm create vite@latest my-app --template react
cd my-app
npm install
npm run dev

项目成功运行后,浏览器打开 http://localhost:5173


📌 第三步:React 核心概念

1️⃣ 组件(Component)

React 组件分为:

  • 函数组件(推荐):

function Welcome() {
  return <h1>Hello, React!</h1>;
}

  • 类组件(旧写法):

class Welcome extends React.Component {
  render() {
    return <h1>Hello, React!</h1>;
  }
}

2️⃣ Props(属性)

用于父组件向子组件传递数据:

function Greeting(props) {
  return <h1>Hello, {props.name}!</h1>;
}
<Greeting name="Alice" />

3️⃣ State(状态管理)

使用 useState 让组件具有内部状态:

import { useState } from "react";
function Counter() {
  const [count, setCount] = useState(0);
  return (
    <div>
      <p>当前计数:{count}</p>
      <button onClick={() => setCount(count + 1)}>增加</button>
    </div>
  );
}

4️⃣ 事件处理

<button onClick={() => alert("按钮被点击了")}>点击我</button>

5️⃣ useEffect(副作用)

常用于请求数据、订阅事件

import { useEffect } from "react";
useEffect(() => {
  console.log("组件挂载了");
}, []);


📌 第四步:搭建简单项目

建议通过小项目来练习: ✅ TodoList计数器天气查询用户管理系统博客或电商项目

下面是一个使用React框架创建的简单TodoList应用的代码示例。这个示例包括添加新任务、展示任务列表和标记任务为已完成的功能。

首先,确保你的开发环境中已经安装了Node.js和npm。然后,你可以通过npx create-react-app todolist命令来创建一个新的React项目。

接下来,在src文件夹中找到并编辑App.js文件:

 
import React, { useState } from 'react';
import './App.css';

function App() {
  const [todos, setTodos] = useState([]);
  const [inputValue, setInputValue] = useState('');

  const handleInputChange = (e) => {
    setInputValue(e.target.value);
  };

  const handleAddTodo = () => {
    if (inputValue.trim()) {
      setTodos([...todos, { text: inputValue, completed: false }]);
      setInputValue('');
    }
  };

  const handleToggleTodo = (index) => {
    const updatedTodos = [...todos];
    updatedTodos[index].completed = !updatedTodos[index].completed;
    setTodos(updatedTodos);
  };

  return (
    <div className="App">
      <h1>Todo List</h1>
      <input value={inputValue} onChange={handleInputChange} />
      <button onClick={handleAddTodo}>Add Todo</button>
      <ul>
        {todos.map((todo, index) => (
          <li key={index} style={{ textDecoration: todo.completed ? 'line-through' : '' }} onClick={() => handleToggleTodo(index)}>
            {todo.text}
          </li>
        ))}
      </ul>
    </div>
  );
}

export default App;

这段代码定义了一个简单的TodoList应用,其中包含一个输入框用于输入新的待办事项,一个按钮用于将新的待办事项添加到列表中,以及一个无序列表用于显示所有的待办事项。每个列表项都可以被点击以标记为完成或未完成。

此外,需要在src目录下创建或修改App.css文件来为应用添加一些样式。例如:

.App {
  font-family: Arial, sans-serif;
  text-align: center;
  margin-top: 50px;
}

input {
  padding: 10px;
  width: 200px;
  margin-right: 10px;
}

button {
  padding: 10px 20px;
}

ul {
  list-style-type: none;
  padding: 0;
}

li {
  padding: 10px;
  cursor: pointer;
  border: 1px solid #ddd;
  margin-top: -1px; /* Prevent double borders */
}

这样就创建了一个基础版本的TodoList应用。可以根据自己的需求进一步扩展和美化它。

📌 第五步:React 进阶学习

在掌握基础语法后,需要深入学习 React 的进阶特性,让开发更高效、组件更健壮。


1️⃣ 组件通信

组件之间的数据传递方式:

  • 父组件 → 子组件:使用 props

function Child({ message }) {
  return <p>{message}</p>;
}
function Parent() {
  return <Child message="Hello from Parent" />;
}

  • 子组件 → 父组件:回调函数

function Child({ onMessageChange }) {
  return <button onClick={() => onMessageChange("子组件的消息")}>传递消息</button>;
}
function Parent() {
  const [message, setMessage] = useState("");
  return (
    <div>
      <p>来自子组件的消息:{message}</p>
      <Child onMessageChange={setMessage} />
    </div>
  );
}

  • 兄弟组件通信(Context 或状态管理)


2️⃣ React 路由(React Router)

在 React 中实现多页面跳转,需要使用 react-router-dom

npm install react-router-dom

示例:

import { BrowserRouter as Router, Route, Routes, Link } from "react-router-dom";
function Home() {
  return <h1>首页</h1>;
}
function About() {
  return <h1>关于我们</h1>;
}
function App() {
  return (
    <Router>
      <nav>
        <Link to="/">首页</Link>
        <Link to="/about">关于我们</Link>
      </nav>
      <Routes>
        <Route path="/" element={<Home />} />
        <Route path="/about" element={<About />} />
      </Routes>
    </Router>
  );
}
export default App;


3️⃣ 全局状态管理

当组件通信变得复杂时,使用状态管理工具:

  • useContext(适用于简单的全局状态)

  • Redux(大型应用推荐)

  • Zustand(轻量级,适合中小型项目)

示例:使用 useContext 创建全局状态:

 
import React, { createContext, useContext, useState } from "react";
const ThemeContext = createContext();
function ThemeProvider({ children }) {
  const [theme, setTheme] = useState("light");
  return (
    <ThemeContext.Provider value={{ theme, setTheme }}>
      {children}
    </ThemeContext.Provider>
  );
}
function Child() {
  const { theme, setTheme } = useContext(ThemeContext);
  return (
    <div>
      <p>当前主题:{theme}</p>
      <button onClick={() => setTheme(theme === "light" ? "dark" : "light")}>
        切换主题
      </button>
    </div>
  );
}
function App() {
  return (
    <ThemeProvider>
      <Child />
    </ThemeProvider>
  );
}
export default App;

4️⃣ 数据请求(API 调用)

React 不能直接访问数据库,一般通过 API(后端) 获取数据:

import { useEffect, useState } from "react";
function FetchData() {
  const [data, setData] = useState(null);
  useEffect(() => {
    fetch("https://jsonplaceholder.typicode.com/todos/1")
      .then((response) => response.json())
      .then((json) => setData(json));
  }, []);
  return <pre>{JSON.stringify(data, null, 2)}</pre>;
}

如果是 POST 请求

fetch("https://jsonplaceholder.typicode.com/posts", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ title: "Hello", body: "World" }),
})
  .then((response) => response.json())
  .then((data) => console.log(data));


📌 第六步:实战项目

学完以上内容,可以尝试一些小型到中型项目:

TodoList(待办事项)天气查询应用(API 获取数据)博客系统(文章管理、用户登录)电商网站(购物车、支付、订单)后台管理系统(React + Ant Design)

扩展阅读

React:构建高效、可复用用户界面的首选框架https://blog.youkuaiyun.com/moton2017/article/details/146182091
React进阶之路:从入门知识到项目实战精通https://blog.youkuaiyun.com/moton2017/article/details/146182664
React 后台管理系统开发全攻略:从零开始搭建高效应用https://blog.youkuaiyun.com/moton2017/article/details/146183066
React开发实战:从常见问题到高级进阶全解析https://blog.youkuaiyun.com/moton2017/article/details/146184295

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

34号树洞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值