【react】基础教程

目录

[一、React 简介](#一、React 简介)

二、环境搭建

[1. 创建 React 项目](#1. 创建 React 项目)

[2. 项目结构](#2. 项目结构)

三、核心概念

[1. JSX 语法](#1. JSX 语法)

[2. 组件 (Component)](#2. 组件 (Component))

[3. 状态 (State) 与属性 (Props)](#3. 状态 (State) 与属性 (Props))

[4. 事件处理](#4. 事件处理)

[5. 条件渲染](#5. 条件渲染)

[6. 列表渲染](#6. 列表渲染)

四、Hooks(函数组件的核心)

[1. useState](#1. useState)

[2. useEffect](#2. useEffect)

[3. 其他常用 Hooks](#3. 其他常用 Hooks)

五、组件通信

[1. 父传子:通过 Props](#1. 父传子:通过 Props)

[2. 子传父:通过回调函数](#2. 子传父:通过回调函数)

[六、路由管理(使用 React Router)](#六、路由管理(使用 React Router))

[1. 安装](#1. 安装)

[2. 基础配置](#2. 基础配置)

[七、状态管理(使用 Context API)](#七、状态管理(使用 Context API))

[1. 创建 Context](#1. 创建 Context)

八、进阶学习方向

九、官方资源


一、React 简介

React 是一个用于构建用户界面的 JavaScript 库(专注于视图层),由 Facebook 开发。其核心特性包括:

组件化:将 UI 拆分为独立可复用的组件。

虚拟 DOM:高效更新界面,优化性能。

声明式编程:通过描述 UI 的最终状态,而非具体操作步骤。

二、环境搭建

1. 创建 React 项目

使用官方脚手架工具 create-react-app 快速初始化项目:

npx create-react-app my-app
cd my-app
npm start
2. 项目结构
my-app/
  ├── public/          # 静态资源
  ├── src/             # 源代码
  │    ├── App.js      # 根组件
  │    └── index.js    # 入口文件
  └── package.json     # 依赖配置

三、核心概念

1. JSX 语法

JSX 是 JavaScript 的语法扩展,允许在 JavaScript 中编写类似 HTML 的结构:

const element = <h1>Hello, React!</h1>;
2. 组件 (Component)

函数组件(推荐):

javascript 复制代码
function Welcome(props) {
  return <h1>Hello, {props.name}</h1>;
}

类组件

javascript 复制代码
class Welcome extends React.Component {
  render() {
    return <h1>Hello, {this.props.name}</h1>;
  }
}
3. 状态 (State) 与属性 (Props)

Props:父组件传递给子组件的数据(只读)。

State :组件内部管理的动态数据(通过 useStatesetState 更新)。

javascript 复制代码
function Counter() {
  const [count, setCount] = useState(0); // 使用 useState Hook

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>+1</button>
    </div>
  );
}
4. 事件处理
javascript 复制代码
<button onClick={() => alert('Clicked!')}>Click Me</button>
5. 条件渲染
javascript 复制代码
function Greeting({ isLoggedIn }) {
  return isLoggedIn ? <h1>Welcome Back!</h1> : <h1>Please Login.</h1>;
}
6. 列表渲染

使用 map()key 属性:

javascript 复制代码
function TodoList() {
  const todos = ['Learn React', 'Build a Project', 'Deploy'];
  return (
    <ul>
      {todos.map((todo, index) => (
        <li key={index}>{todo}</li>
      ))}
    </ul>
  );
}

四、Hooks(函数组件的核心)

1. useState

管理组件状态:

javascript 复制代码
const [state, setState] = useState(initialValue);
2. useEffect

处理副作用(如数据请求、DOM 操作):

javascript 复制代码
useEffect(() => {
  // 组件挂载或更新时执行
  fetchData();
  return () => {
    // 组件卸载时清理(如取消订阅)
  };
}, [dependencies]); // 依赖数组控制执行时机
3. 其他常用 Hooks

useContext:访问 React 上下文。

useRef:获取 DOM 引用或保存可变值。

useReducer:复杂状态管理。

五、组件通信

1. 父传子:通过 Props
javascript 复制代码
function Parent() {
  return <Child message="Hello from Parent" />;
}

function Child({ message }) {
  return <p>{message}</p>;
}
2. 子传父:通过回调函数
javascript 复制代码
function Parent() {
  const handleChildClick = (data) => {
    console.log('Child sent:', data);
  };
  return <Child onClick={handleChildClick} />;
}

function Child({ onClick }) {
  return <button onClick={() => onClick('Data from Child')}>Click</button>;
}

六、路由管理(使用 React Router)

1. 安装
javascript 复制代码
npm install react-router-dom
2. 基础配置
javascript 复制代码
import { BrowserRouter as Router, Route, Link } from 'react-router-dom';

function App() {
  return (
    <Router>
      <nav>
        <Link to="/">Home</Link>
        <Link to="/about">About</Link>
      </nav>
      <Route path="/" exact component={Home} />
      <Route path="/about" component={About} />
    </Router>
  );
}

七、状态管理(使用 Context API)

1. 创建 Context
javascript 复制代码
const ThemeContext = React.createContext('light');

function App() {
  return (
    <ThemeContext.Provider value="dark">
      <Toolbar />
    </ThemeContext.Provider>
  );
}

function Toolbar() {
  return <ThemedButton />;
}

function ThemedButton() {
  const theme = useContext(ThemeContext);
  return <button style={{ background: theme }}>Themed Button</button>;
}

八、进阶学习方向

  1. 性能优化React.memo, useMemo, useCallback

  2. 状态管理库:Redux, MobX

  3. 服务端渲染:Next.js

  4. UI 库:Material-UI, Ant Design

九、官方资源

通过实践小项目(如 Todo List、博客系统)巩固知识,逐步深入复杂应用开发!

码字不易,欢迎各位大佬点赞

相关推荐
嘵奇2 小时前
SpringBoot五:Web开发
java·前端·spring boot
年纪轻轻只想躺平2 小时前
vue3响应式数据原理
前端·javascript·vue.js
drebander2 小时前
Docker 与 Nginx:容器化 Web 服务器
前端·nginx·docker
前端小王hs4 小时前
MySQL后端返回给前端的时间变了(时区问题)
前端·数据库·mysql
千篇不一律4 小时前
工作项目速刷手册
服务器·前端·数据库
阿丽塔~5 小时前
vue3 下载文件 responseType-blob 或者 a标签
前端·vue·excel
七灵微6 小时前
【前端】Axios & AJAX & Fetch
前端·javascript·ajax
究极无敌暴龙战神X7 小时前
一篇文章学懂Vuex
前端·javascript·vue.js
shaoin_27 小时前
Vue3中ref与reactive的区别
前端·vue.js