React路由使用
小于 1 分钟
React 路由使用
安装 react-router-dom
pnpm install react-router-dom封装 router 入口文件
创建文件
mkdir src/router/index.tsxrouter/index.tsx
import { createBrowserRouter } from 'react-router-dom';
import Root from '../views/root';
import PageA from '../views/pageA';
const router = createBrowserRouter([
  {
    path: '/',
    element: <Root />,
  },
  {
    path: '/pageA',
    element: <PageA />,
  },
]);
export default router;使用 router
将封装好的 router 引入 main.tsx 中注册
import React from 'react';
import ReactDOM from 'react-dom/client';
import router from './router';
import { RouterProvider } from 'react-router-dom';
const rootComponent = () => {
  return (
    <React.StrictMode>
      <RouterProvider router={router}></RouterProvider>
    </React.StrictMode>
  );
};
ReactDOM.createRoot(document.getElementById('root')!).render(rootComponent());页面跳转
声明式跳转
声明式跳转,也叫标签跳转,通过 a 获取 Link 标签进行跳转
import { Button } from 'antd';
import { Link } from 'react-router-dom';
function Root() {
  return (
    <>
      <Button>
        <Link to="/pageA">前往下一个页面</Link>
      </Button>
    </>
  );
}
export default Root;编程式跳转
使用 useNavigate(路由框架自定义 hook,非 React 官方提供)
import { Button } from 'antd';
import { useNavigate } from 'react-router-dom';
function Root() {
  const navigate = useNavigate();
  const toNextPage = () => {
    navigate('/pageA');
  };
  return (
    <>
      <Button onClick={toNextPage}>前往下一个页面</Button>
    </>
  );
}
export default Root;