【项目实战篇】目录结构-路由定义

一、安装相关依赖文件

less @types/node、axios...


二、目录结构定义

三、路由定义

方式一:Api 路由定义

  • router.tsx
import { Navigate, createHashRouter, createBrowserRouter } from 'react-router-dom';
import Login from '@/views/Login';
import Welcome from '@/views/Welcome';
import Error404 from '@/views/404';
import Error403 from '@/views/403';

const router = [
  {
    path: '/',
    element: <Welcome />
  },
  {
    path: '/login',
    element: <Login />
  },
  {
    path: '*',
    element: <Navigate to='/404' />
  },
  {
    path: '/404',
    element: <Error404 />
  },
  {
    path: '/403',
    element: <Error403 />
  }
];

export default createBrowserRouter(router);
  • App.tsx
import { BrowserRouter, RouterProvider } from 'react-router-dom';
import Router from './router/index';
import './App.css';

function App() {
  return <RouterProvider router={Router} />;
}

export default App;

方式二:组件路由定义

  • router.tsx
import { Navigate, useRoutes } from 'react-router-dom';
import Login from '@/views/Login';
import Welcome from '@/views/Welcome';
import Error404 from '@/views/404';
import Error403 from '@/views/403';

const router = [
  {
    path: '/',
    element: <Welcome />
  },
  {
    path: '/login',
    element: <Login />
  },
  {
    path: '*',
    element: <Navigate to='/404' />
  },
  {
    path: '/404',
    element: <Error404 />
  },
  {
    path: '/403',
    element: <Error403 />
  }
];

export default function Router() {
  return useRoutes(router);
}
  • App.tsx
import { BrowserRouter } from 'react-router-dom';
import Router from './router/index';
import './App.css';

function App() {
  return (
    <BrowserRouter>
      <Router />
    </BrowserRouter>
  );
}

export default App;

四、附加页面实现

1、NotFound 404
import { Result, Button } from 'antd';
import { useNavigate } from 'react-router-dom';

function NotFound() {
  const navigate = useNavigate();
  const handleClick = () => {
    navigate('/');
  };
  return (
    <Result
      status={404}
      title='404'
      subTitle='抱歉,您访问的页面不存在'
      extra={
      <Button type='primary' onClick={handleClick}>
        回首页
      </Button>
      }
      />
  );
}

export default NotFound;
2、NotRight 403
import { Result, Button } from 'antd';
import { useNavigate } from 'react-router-dom';

function NotRight() {
  const navigate = useNavigate();
  const handleClick = () => {
    navigate('/');
  };
  return (
    <Result
      status={403}
      title='403'
      subTitle='抱歉,您当前没有权限访问此页面'
      extra={
      <Button type='primary' onClick={handleClick}>
        回首页
      </Button>
      }
      />
  );
}

export default NotRight;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值