1.声明式路由导航
1.1概念
说明:声明式导航是指通过在模版中通过<Link/>组件描述出要跳转到哪里去,比如后台管理系统的左侧菜单通常使用这种方式进行。
import {Link} from "react-router-dom"
const Login=()=>{
return (
<div>我是登录页面
<Link to={"/home"}>跳转Home页</Link>
</div>
)
}
export default Login
1.2传参
1.2.1 Login页面
<button onClick={()=>navigation("/home/1/forever")}>跳转Home页(params传参)</button>
1.2.2路由path配置
import Login from "../page/Login";
import Home from "../page/Home";
import {createBrowserRouter} from "react-router-dom"
const router=createBrowserRouter([
{
path:"/login",
element:<Login></Login>
},
{
path:"/home/:id/:username",
element:<Home></Home>
}
]
)
export default router
1.2.3参数获取
import { useParams } from "react-router-dom"
const Home=()=>{
// const [params]=useSearchParams()
const params=useParams()
return (
<div>我是home页面id{params.id}
<div>我是home页面username{params.username}</div>
</div>
)
}
export default Home
1.2.4页面
2.编程式路由导航
2.1概念
说明:编程式导航是指通过`useNavigate`钩子得到导航方法,然后通过调用方法以命令式的形式进行路由跳转,比如想在登录请求完毕之后跳转就可以选择这种方式,更加灵活。
import {Link,useNavigate} from "react-router-dom"
const Login=()=>{
const navigation=useNavigate()
return (
<div>我是登录页面
{/* 声明式写法 */}
<Link to={"/home"}>跳转Home页</Link>
{/* 命令式写法 */}
<button onClick={()=>navigation("/home")}>跳转Home页</button>
</div>
)
}
export default Login
2.2传参
2.2.1Lgoin页面
import {Link,useNavigate} from "react-router-dom"
const Login=()=>{
const navigation=useNavigate()
return (
<div>我是登录页面
{/* 声明式写法 */}
<Link to={"/home"}>跳转Home页</Link>
{/* 命令式写法 */}
<button onClick={()=>navigation("/home")}>跳转Home页</button>
<button onClick={()=>navigation("/home?id=1&&username=forever")}>跳转Home页(传参)</button>
</div>
)
}
export default Login
2.2.2跳转效果
2.2.3参数获取
说明:home获取参数。
import { useSearchParams } from "react-router-dom"
const Home=()=>{
const [params]=useSearchParams()
return (
<div>我是home页面{params.get("id")}
<div>我是home页面{params.get("username")}
</div>
</div>)
}
export default Home