React(11)路由demo

1、创建项目

2.创建router实例对象和配置路由对应关系

这里是在index.js文件中

javascript 复制代码
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import reportWebVitals from './reportWebVitals';
import { createBrowserRouter, RouterProvider } from 'react-router-dom';
// 创建router实例对象和配置路由对应关系

const router= createBrowserRouter([
  {
    path: '/login',
    element: <div>login</div>
  },
  {
    path: '/article',
    element: <div>article</div>
  },
])

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
    <RouterProvider router={router}></RouterProvider>
  </React.StrictMode>
);

reportWebVitals();

优化

路由文件夹

组件创建和引入

index.js文件夹中使用

路由跳转

1、Link跳转

import { Link } from "react-router-dom";

<Link to="/article">跳转到文章页面</Link>

2、编程式导航

javascript 复制代码
import { Link, useNavigate } from "react-router-dom";

const Login=()=>{
  const navigate = useNavigate();
  const handleClick = () => {
    // 登录成功后跳转到文章页面
    navigate("/article");
  };
  return (
    <div>
      <h1>登录页面</h1>
      <Link to="/article">跳转到文章页面</Link>
      <button onClick={handleClick}>登录</button>
    </div>
  )
}
export default Login;

3、路由传参

<button onClick={()=>navigate('/article?name=张三&&age=18')}>登录</button>

javascript 复制代码
import {  useSearchParams } from "react-router-dom";

const Article=()=>{
  const[params]=useSearchParams();
  console.log(params,222);
  const name=params.get("name");  
  const age=params.get("age");

  
  return <div>Article
    <h1>文章页面{name}</h1>
  </div>
}
export default Article;

4、params传参

{ path: "/params/:id", element: < Params/> },

javascript 复制代码
import {  useParams } from "react-router-dom";

const Article=()=>{
const params=useParams();
const {id}=params;

  return <div>Article
    <h1>params登录{id}</h1>
  </div>
}
export default Article;

嵌套路由

路由跳转需要占位组件

javascript 复制代码
import { Link, Outlet } from "react-router-dom";

const Layout=()=>{
    return (
        <div>
            <h1>Layout</h1>
            <Link to="/board">Board</Link>
            <Link to="/about">About</Link>
            <Outlet/>
        </div>
    )
}
export default Layout;

默认二级路由展示

需求 在页面中默认展示子路由页面

只需要将子路由设置为index:true 加上相关组件就行

404页面

只需要配置跳转地址为 *即可

javascript 复制代码
 {
    path: "/",
    element:<Layout/>,
    children:[
      {
        index:true,
        // path:'/board',
        element:<Board/>
      },
      {
        path:'about',
        element:<About/>
      }
    ]
  },
  {
    path: "*",
    element:<NotFound></NotFound>
  }
相关推荐
阿隆_趣编程4 分钟前
为了方便相亲,我用AI写了一款小程序
前端·javascript·微信小程序
EndingCoder16 分钟前
Electron 跨平台兼容性:处理 OS 差异
前端·javascript·electron·前端框架·node.js·chrome devtools
zhong liu bin32 分钟前
Vue框架技术详解——项目驱动概念理解【前端】【Vue】
前端·javascript·vue.js·vscode·vue
前端 贾公子1 小时前
ElementUI 中 validateField 对部分表单字段数组进行校验时多次回调问题
前端·javascript·elementui
棒棒的唐1 小时前
vue2 elementUI 登录页面实现回车提交登录的方法
前端·javascript·elementui
知识分享小能手1 小时前
React学习教程,从入门到精通,React 使用属性(Props)创建组件语法知识点与案例详解(15)
前端·javascript·vue.js·学习·react.js·前端框架·vue
摸鱼的春哥2 小时前
前端程序员最讨厌的10件事
前端·javascript·后端
牧羊狼的狼6 小时前
React 中的 HOC 和 Hooks
前端·javascript·react.js·hooks·高阶组件·hoc
知识分享小能手7 小时前
React学习教程,从入门到精通, React 属性(Props)语法知识点与案例详解(14)
前端·javascript·vue.js·学习·react.js·vue·react
luckys.one7 小时前
第9篇:Freqtrade量化交易之config.json 基础入门与初始化
javascript·数据库·python·mysql·算法·json·区块链