需要四个页面:项目入口index.js文件,router配置路由跳转文件,article组件页面,login组件页面
1、项目入口index.js文件
注意:要安装这个依赖 react-router-dom
import React from 'react'
import { createRoot } from 'react-dom/client'
import { RouterProvider } from 'react-router-dom'
import router from './router'
const root = createRoot(document.getElementById('root'))
root.render(
<RouterProvider router={router} />
)
2、router配置路由跳转文件
import React from "react";
import { createBrowserRouter } from "react-router-dom";
import Article from "../views/article";
import Login from "../views/login";
const router = createBrowserRouter([
{
// path: '/login',
path: '/login/:id/:name',//第二种传参需要修改的
element: <Login />
},
{
path: '/article',
element: <Article />
}
])
export default router
3、article组件页面
import { Link,useNavigate } from "react-router-dom"
const Article = ()=>{
const navigate = useNavigate()
return (
<div>
文章页面
<br/>
{/* 声明式写法 */}
<Link to='/login'>login</Link>
{/* 命令式写法 */}
<button onClick={()=>navigate('/login')}>跳转到login页面</button>
<br/>
{/* 传参数 第一种:问号传递参数 link和navigate都适用 */}
<Link to='/login?id=100&name=zhangsan'>login(带参数)</Link>
<button onClick={()=>navigate('/login?id=100&name=zhangsan')}>跳转到login页面(带参数)</button>
{/* 第二种传参方式 */}
<button onClick={()=>navigate('/login/2/jia')}>跳转到login页面(带参数)</button>
{/* 需要再 路由配置的时候 加上 path: '/login/:id', */}
</div>
)
}
export default Article
4、login组件页面
import { Link, useParams, useSearchParams } from "react-router-dom"
const Login = ()=>{
// 第一种传参方式
// const [ params ] = useSearchParams();
// console.log('第一种传参',Object.fromEntries(params.entries()));
// 第二种传参方式
const objParams = useParams();
console.log('第二种传参',objParams);
return (
<div>
登录页面
<br/>
<Link to='/article'>article</Link>
{/* 第一种传参的页面上显示 */}
{/* <ul>
{Array.from(params.entries()).map(([key, value]) => (
<li key={key}>
{`${key}: ${value}`}
</li>
))}
</ul> */}
</div>
)
}
export default Login