您现在的位置是:首页 > 技术教程 正文

如何使用useNavigate 进行路由的跳转以及传参,并且获取参数。

admin 阅读: 2024-04-01
后台-插件-广告管理-内容页头部广告(手机)


前言

本文章主要是讲述如何通过useNavigate携带参数并在对应组件进行接收。


提示:以下是本篇文章正文内容,下面案例可供参考

一、如何携带search,params,state参数

  1. import React, { memo } from 'react'
  2. import { useNavigate } from 'react-router-dom'
  3. const Home = memo(() => {
  4. const navigate=useNavigate()
  5. const goDetail = () => {
  6. navigate('/Detail?name=tom&age=18')
  7. }
  8. const goAbout = () => {
  9. navigate('/About/jack')
  10. }
  11. const goshop = () => {
  12. navigate('/Detail/Shop', { state: {name:'tom',age:"20"} })
  13. }
  14. return (
  15. <div>
  16. <button onClick={goDetail}>点我去Detail页面并且传递search参数button>
  17. <button onClick={goAbout}>点我去About页面并且传递params参数button>
  18. <button onClick={goshop}>点我去shop页面并且传递state参数button>
  19. div>
  20. )
  21. })
  22. export default Home

二、写对应的路由规则

  1. import { useRoutes,Navigate } from "react-router-dom";
  2. import Home from "../pages/Home";
  3. import Detail from "../pages/Detail";
  4. import About from "../pages/About";
  5. import Shop from "../pages/Shop";
  6. import React, { memo } from 'react'
  7. const DefineRoutes = memo(() => {
  8. const routes= useRoutes(
  9. [
  10. {
  11. path: '/Home',
  12. element:<Home>Home>
  13. },
  14. {
  15. path: '/Detail',
  16. element: <Detail>Detail>,
  17. children: [
  18. {
  19. path: 'Shop',
  20. element:<Shop>Shop>
  21. }
  22. ]
  23. },
  24. {
  25. path: '/About/:name',
  26. element:<About>About>
  27. },
  28. {
  29. path: '/',
  30. element:<Navigate to='/Home'>Navigate>
  31. }
  32. ]
  33. )
  34. return routes
  35. })
  36. export default DefineRoutes

三,在App导入应用

  1. import React, { memo } from 'react'
  2. import DefineRoutes from './router'
  3. const App = memo(() => {
  4. return (
  5. <div>
  6. <DefineRoutes>DefineRoutes>
  7. div>
  8. )
  9. })
  10. export default App

一定一定要在App组件外面包裹一层router,比如BrowerRouter

四,在不同的组件中获取不同的参数

获取Params参数使用useParams

  1. import React, { memo } from 'react'
  2. import { useParams } from 'react-router-dom'
  3. const About = memo(() => {
  4. console.log(useParams())
  5. return (
  6. <div>Aboutdiv>
  7. )
  8. })
  9. export default About

获取search参数使用useSearchParams

  1. import React, { memo } from 'react'
  2. import {Outlet, useSearchParams } from 'react-router-dom'
  3. const Detail = memo(() => {
  4. const [search,setsearch] = useSearchParams()
  5. console.log(search.get('name'))
  6. console.log(search.get('age'))
  7. return (
  8. <div>Detail
  9. <h1>我是Detail的子组件h1>
  10. <Outlet>Outlet>
  11. div>
  12. )
  13. })
  14. export default Detail

使用useLocation获取search参数

  1. import React, { memo } from 'react'
  2. import { useLocation } from 'react-router-dom'
  3. const Shop = memo(() => {
  4. const state = useLocation()
  5. console.log(state)
  6. return (
  7. <div>Shopdiv>
  8. )
  9. })
  10. export default Shop

总结

不同的路由传参一定要注意,是否要在注册路由的时候接收,一定要使用对应的hook接收对应的参数。

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索
排行榜