当前位置: 首页 > news >正文

React 高级教程

使用 React 高级组件(HOC)实现的完整项目示例,包含权限控制、数据加载状态处理、性能优化等常见高级功能。创建一个简单的博客系统:

// 项目结构:
src/
|-- components/
|   |-- ArticleList.jsx
|   |-- Article.jsx
|   |-- Header.jsx
|   |-- LoginForm.jsx
|   |-- UserProfile.jsx
|   |-- WithLoading.jsx
|   |-- AuthContext.jsx
|   |-- WithAuth.jsx
|-- hocs/
|   |-- withAuth.js
|-- hooks/
|   |-- useFetch.js
|   |-- useDebouncedFetch.js
|-- contexts/
|   |-- UserContext.js
|-- pages/
|   |-- HomePage.jsx
|   |-- AdminPage.jsx
|   |-- LoginPage.jsx
|   |-- UserProfilePage.jsx
|   |-- ArticleDetailPage.jsx
|-- App.jsx
|-- index.js// 首先安装必要依赖:react-router-dom

关键技术点:

1. 创建认证上下文 (AuthContext.jsx)

import { createContext, useContext, useState } from 'react';const AuthContext = createContext();export function AuthProvider({ children }) {const [user, setUser] = useState(null);const login = (userData) => {setUser({ ...userData, role: 'admin' }); // 模拟登录};const logout = () => {setUser(null);};return (<AuthContext.Provider value={{ user, login, logout }}>{children}</AuthContext.Provider>);
}export const useAuth = () => useContext(AuthContext);

2. 创建高阶组件 (WithAuth.jsx)

import { useNavigate } from 'react-router-dom';
import { useAuth } from '../contexts/AuthContext';export const withAuth = (WrappedComponent, requiredRole = 'user') => {return (props) => {const { user } = useAuth();const navigate = useNavigate();if (!user) {navigate('/login');return null;}if (requiredRole === 'admin' && user.role !== 'admin') {return <div>无权限访问此页面</div>;}return <WrappedComponent {...props} user={user} />;};
};

3. 加载状态高阶组件 (WithLoading.jsx)

import { useState, useEffect } from 'react';export const withLoading = (WrappedCom

http://www.mrgr.cn/news/90410.html

相关文章:

  • 【CS61A 2024秋】Python入门课,全过程记录P7(Week13 Macros至完结)【完结撒花!】
  • [笔记.AI]Deepseek-R1 各参数版本的蒸馏模型对比
  • Spring Boot 配置 Mybatis 读写分离
  • jenkins备份还原配置文件
  • 基于STM32的智能鱼缸水质净化系统设计
  • C++引用深度详解
  • Flutter_学习记录_基本组件的使用记录_2
  • 数据结构与算法-单链表
  • UnrealEngine开发无人机飞行模拟软件的手柄如何选择
  • 伺服使能的含义解析
  • ubuntu20.04+ROS+Gazebo+px4+QGC+MAVROS
  • Packer 手动修复安装腾讯云插件
  • unity 安装Entities
  • 深入理解Java对接DeepSeek
  • 【Python深入浅出㉗】Python3正则表达式:开启高效字符串处理大门
  • 数据结构与算法之排序算法-快速排序(分治)
  • Linux内核实时机制x - 实时性之中断响应优化
  • 1.【线性代数】——方程组的几何解释
  • DeepSeek投喂数据(训练AI)
  • 如何评估云原生GenAI应用开发中的安全风险(下)