react-router-dom(v6) 的使用

1.配置 basename

方式一

1.创建一个router/index.tsx 文件

import { createBrowserRouter } from "react-router-dom";
import Home from "../pages/Home";
import About from "../pages/About";
import Login from "../pages/login";
const basename = process.env.REACT_APP_ROUTERBASE || "";
const router = createBrowserRouter([
  {
    path: `${basename}/`,
    element: <Home />,
  },
  {
    path: `${basename}/login`,
    element: <Login />,
  },
  {
    path: `${basename}/about`,
    element: <About />,
  },
]);

export default router;

2.在app.tsx 配置

import { Provider } from "react-redux";
import store from "./store";
import { RouterProvider } from "react-router-dom";
import router from "./router";
function App() {
  return (
    <Provider store={store}>
      <RouterProvider router={router} />
    </Provider>
  );
}
export default App;
 方式二

1.创建一个router/index.tsx 文件

import { createBrowserRouter, Routes, Route } from "react-router-dom";
import Home from "../pages/Home";
import About from "../pages/About";
import Login from "../pages/login";
const routes = [
  {
    path: `/`,
    element: <Home />,
  },
  {
    path: `/login`,
    element: <Login />,
  },
  {
    path: `/about`,
    element: <About />,
  },
];

export default function Router() {
  return (
    <Routes>
      {routes.map((route, index) => (
        <Route key={index} path={route.path} element={route.element} />
      ))}
    </Routes>
  );
}

2.在app.tsx 配置

import { Provider } from "react-redux";
import store from "./store";
import { RouterProvider, BrowserRouter } from "react-router-dom";
import Router from "./router";
function App() {
  return (
    <Provider store={store}>
      <BrowserRouter basename="/app">
        <Router></Router>
      </BrowserRouter>
    </Provider>
  );
}
export default App;

2.BrowserRouterHashRouter的使用示例

// 使用 BrowserRouter
import React from 'react';
import { BrowserRouter, Routes, Route } from 'react-router-dom';
import LoginPage from './LoginPage';
import HomePage from './HomePage';

const App = () => {
  return (
    <BrowserRouter>
      <Routes>
        <Route path="/login" element={<LoginPage />} />
        <Route path="/" element={<HomePage />} />
      </Routes>
    </BrowserRouter>
  );
};

export default App;

// 使用 HashRouter
import React from 'react';
import { HashRouter, Routes, Route } from 'react-router-dom';
import LoginPage from './LoginPage';
import HomePage from './HomePage';

const App = () => {
  return (
    <HashRouter>
      <Routes>
        <Route path="/login" element={<LoginPage />} />
        <Route path="/" element={<HomePage />} />
      </Routes>
    </HashRouter>
  );
};

export default App;

在这两个示例中,BrowserRouterHashRouter分别作为根组件包裹了路由配置。它们的工作方式基本相同,只是BrowserRouter使用HTML5的history API来管理路由,而HashRouter使用URL中的哈希部分来管理路由。选择使用哪种方式取决于你的项目需求和部署环境。

3.编程式导航

import React from 'react';
import { useNavigate } from 'react-router-dom';

const LoginPage = () => {
  const navigate = useNavigate();

  const handleLogin = () => {
    // 执行登录逻辑
    // 登录成功后进行页面导航
    navigate('/'); // 导航到首页
  };

  return (
    <div>
      <h2>Login Page</h2>
      <button onClick={handleLogin}>Login</button>
    </div>
  );
};

export default LoginPage;

注: 如果在跳转时想要替换记录,可以添加额外参数 replace 为 true

navigate('/', { replace: true })

React Router DOM v6 是一个用于 React 应用程序的路由库。它提供了一种在应用程序中进行页面导航和管理的方式。 下面是一个简单的使用教程来帮助你开始使用 React Router DOM v6: 1. 安装 React Router DOM v6: ```shell npm install react-router-dom@next ``` 注意:v6 目前仍然是预发布版本,所以需要添加 `@next` 后缀来安装最新版本。 2. 在你的应用程序的入口文件(通常是 `index.js`)中导入所需的组件: ```jsx import { BrowserRouter as Router, Route, Link } from 'react-router-dom'; ``` 3. 使用 `Router` 组件将你的应用程序包裹起来,并定义你的路由规则: ```jsx ReactDOM.render( <Router> <Route path="/" component={App} /> </Router>, document.getElementById('root') ); ``` 这个例子中,所有匹配 `/` 路径的组件都将渲染 `App` 组件。 4. 在你的应用程序的其他组件中使用 `Link` 组件来创建导航链接: ```jsx import { Link } from 'react-router-dom'; function Navigation() { return ( <nav> <ul> <li> <Link to="/">Home</Link> </li> <li> <Link to="/about">About</Link> </li> <li> <Link to="/contact">Contact</Link> </li> </ul> </nav> ); } ``` 这个例子中,点击链接将会导航到对应的路径。 5. 在你的应用程序的其他组件中使用 `Route` 组件来定义不同路径下的组件渲染: ```jsx import { Route } from 'react-router-dom'; function App() { return ( <div> <h1>My App</h1> <Route exact path="/" component={HomePage} /> <Route path="/about" component={AboutPage} /> <Route path="/contact" component={ContactPage} /> </div> ); } ``` 这个例子中,`HomePage` 组件将会在 `/` 路径下渲染,`AboutPage` 组件将会在 `/about` 路径下渲染,`ContactPage` 组件将会在 `/contact` 路径下渲染。 这只是 React Router DOM v6 的一些基本用法,还有很多其他功能和概念可以学习。你可以查阅官方文档以获取更多详细的信息和示例代码:https://reactrouter.com/docs/en/v6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值