React入门(四)-全局路由以及mock数据模块化

全局路由以及mock数据模块化

本次优化主要围绕功能增强、代码模块化以及项目结构优化展开,具体如下:

1. React路由保护机制优化

为防止用户绕过登录页面直接访问受保护路由,我们在AppContent方法中引入了全局路由监听机制。

通过useEffect钩子监听路由变化,结合sessionStorage检查用户登录状态,确保未登录用户无法访问非登录页面。
代码实现:

javascript 复制代码
// 使用 useEffect 监听路由变化
useEffect(() => {
  const isLoggedIn = !!SessionStorageUtil.getItem('user');
  if (!isLoggedIn && !['/login', '/'].includes(location.pathname)) {
    navigate('/login', { replace: true });
  }
}, [location, navigate]);

优化效果:

  • 实现全局路由保护,提升应用安全性。
  • 避免用户通过直接访问URL绕过登录逻辑。

2. Mock服务模块化重构

为提升代码复用性与可维护性,我们将mockServer.js中的模拟数据请求逻辑提取为独立模块common.js
重构后代码:

javascript 复制代码
import Mock from 'mockjs';

export default function mockCommon(app) {
  // 模拟登录接口
  app.post('/api/login', (req, res) => {
    const { username, password } = req.body;
    if (username === 'admin' && password === '123456') {
      res.json({ success: true, message: '登录成功!', data: { token: 'mock-token' } });
    } else {
      res.status(401).json({ success: false, message: '用户名或密码错误!' });
    }
  });

  // 模拟数据接口
  app.get('/api/data', (req, res) => {
    res.json({
      success: true,
      data: Mock.mock({ 'list|5': ['@id'] }),
    });
  });
}

调用方式:

javascript 复制代码
import express from 'express';
import mockCommon from './common';

const app = express();
app.use(express.json());
mockCommon(app); // 注册模拟接口
app.listen(5000, () => console.log('Mock server is running on http://localhost:5000'));

优化效果:

  • 提升代码模块化程度,便于后续扩展与维护。
  • 通过集中管理Mock逻辑,减少重复代码。

3. 项目结构优化

为提升项目可读性与扩展性,我们将相关组件与页面统一迁移至view目录下,具体包括:

  • About.tsx
  • Dashboard.tsx
  • Home.tsx

优化效果:

  • 优化项目结构,便于后续功能扩展。
  • 提升代码组织性,便于团队协作。

总结

本次优化从功能安全、代码模块化以及项目结构三个方面入手,显著提升了项目的可维护性与扩展性。后续将继续探索更多优化方向,欢迎大家交流讨论!

项目完整代码托管于 Gitee,地址为:gitee.com/animal-fox_...

相关推荐
Ai_easygo2 小时前
AI Agent开发入门——从ReAct到Tool Calling,拆解Agent的底层运行逻辑
前端·人工智能·react.js
张元清3 小时前
React useResizeObserver Hook:追踪元素尺寸变化(2026)
javascript·react.js
葬送的代码人生7 小时前
从 Vue 到 React:Tailwind CSS 布局 + BFF 代理实战
前端·react.js·架构
名字还没想好☜11 小时前
React useLayoutEffect vs useEffect:页面闪一下的元凶与正确修法
前端·javascript·react.js·react·hooks
我是大卫12 小时前
【图】React源码解析-从数据结构、依赖追踪机制、值传播与更新触发、以及性能陷阱与优化,深挖useContext的底层原理
前端·react.js·源码
两只羊ovo12 小时前
Vite+React+TS+Tailwind搭建WebGPU本地大模型项目,拆解前端核心知识点
前端·react.js
沉迷学习 日益消瘦12 小时前
7 React Native / Expo 开发体验:项目结构、跨平台适配与构建发布
javascript·react native·react.js
bonechips12 小时前
React + WebGPU:在浏览器里跑一个 DeepSeek 推理模型
react.js·typescript
crary,记忆14 小时前
React Hook 浅学 2.0 - 自定义Hook
前端·react.js·前端框架
触底反弹14 小时前
🔥 React 零基础入门(下):Props + State + useEffect 生命周期深度解析
前端·react.js·面试