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

这篇具有很好参考价值的文章主要介绍了如何使用useNavigate 进行路由的跳转以及传参,并且获取参数。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

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


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

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

import React, { memo } from 'react'
import { useNavigate } from 'react-router-dom'
const Home = memo(() => {
  const navigate=useNavigate()
 const  goDetail = () => {
    navigate('/Detail?name=tom&age=18')
  }
  const goAbout = () => {
    navigate('/About/jack')
  }
  const goshop = () => {
    navigate('/Detail/Shop', { state: {name:'tom',age:"20"} })
  }
  return (
    <div>
      <button onClick={goDetail}>点我去Detail页面并且传递search参数</button>
      <button onClick={goAbout}>点我去About页面并且传递params参数</button>
      <button onClick={goshop}>点我去shop页面并且传递state参数</button>
    </div>
  )
})

export default Home

二、写对应的路由规则

import { useRoutes,Navigate } from "react-router-dom";
import Home from "../pages/Home";
import Detail from "../pages/Detail";
import About from "../pages/About";
import Shop from "../pages/Shop";

import React, { memo } from 'react'
const DefineRoutes = memo(() => {
const routes= useRoutes(
    [
      {
        path: '/Home',
        element:<Home></Home>
      },
      {
        path: '/Detail',
        element: <Detail></Detail>,
        children: [
          {
            path: 'Shop',
            element:<Shop></Shop>
          }
        ]
      },
      {
        path: '/About/:name',
        element:<About></About>
      },
      {
        path: '/',
        element:<Navigate to='/Home'></Navigate>
    }
    ]
  )
  return routes
})

export default DefineRoutes 

三,在App导入应用

import React, { memo } from 'react'
import DefineRoutes from './router'
const App = memo(() => {
  return (
    <div>
      <DefineRoutes></DefineRoutes>
    </div>
  )
})

export default App

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

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

获取Params参数使用useParams

import React, { memo } from 'react'
import { useParams } from 'react-router-dom'

const About = memo(() => {
  console.log(useParams())
  return (
    <div>About</div>
  )
})

export default About

获取search参数使用useSearchParams

import React, { memo } from 'react'
import {Outlet, useSearchParams } from 'react-router-dom'


const Detail = memo(() => {
 const [search,setsearch] = useSearchParams()
  console.log(search.get('name'))
  console.log(search.get('age'))
  return (
    <div>Detail
      <h1>我是Detail的子组件</h1>
      <Outlet></Outlet>
    </div>
  )
})

export default Detail

使用useLocation获取search参数

import React, { memo } from 'react'
import { useLocation } from 'react-router-dom'

const Shop = memo(() => {
  const state = useLocation()
  console.log(state)
  return (
    <div>Shop</div>
  )
})

export default Shop

总结

不同的路由传参一定要注意,是否要在注册路由的时候接收,一定要使用对应的hook接收对应的参数。文章来源地址https://www.toymoban.com/news/detail-517619.html

到了这里,关于如何使用useNavigate 进行路由的跳转以及传参,并且获取参数。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端:a标签的跳转方式

     目标页面中需要包含对应的锚点,例如: 1、在当前窗口中打开链接(默认行为):  2、在新窗口中打开链接:  3、在相同的框架中打开链接(如果有框架): 4、在父框架中打开链接(如果有框架):  5、在顶层窗口中打开链接: 

    2024年04月15日
    浏览(32)
  • SpringSecurity6 | 退出登录后的跳转

    ✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 循序渐进学SpringSecurity6 ✨特色专栏: MySQL学习 🥭本文内容: SpringSecurity6 | 登录失败后的JSON处理 📚个人知识库: Leo知识库,欢迎大家访问 学

    2024年02月03日
    浏览(56)
  • SpringSecurity6 | 登录失败后的跳转

    ✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 循序渐进学SpringSecurity6 ✨特色专栏: MySQL学习 🥭本文内容: SpringSecurity6 | 失败后的跳转 📚个人知识库: Leo知识库,欢迎大家访问 学习参考

    2024年02月03日
    浏览(37)
  • Vue3 - 实现路由 “新开一页“ 进行页面跳转功能,Router 路由跳转时在新窗口打开页面(网站跳转页面时浏览器新开页签打开网页,支持在页面、纯 js/ts 文件中使用,详细示例代码教程)

    网上这方面教程很少,本文提供多种解决方案,适用于任何场景。 本文 实现了在 vue3 项目开发中,当页面跳转时浏览器打开新窗口(新页签)跳转,Router 路由跳转并新开一页教程, 无论您是在普通页面、纯 js/ts 文件中,都可以使用, 如下图所示,当执行路由跳转时浏览器

    2024年02月03日
    浏览(66)
  • 小程序与h5之间的跳转(webview)

    在微信官网中,h5跳小程序并带参是有api的,直接使用wx.miniProgram.navigateTo(url)就可以了,但是项目中往往这个是不够用的,因为我们可能还想着从小程序中执行完一些程序后拿到返回值给返回到h5中,这时这个参数就不好带到h5中了,所以这篇文章就解决了这个 小程序向h5传参

    2024年02月10日
    浏览(46)
  • js有哪些常用的跳转页面方法(补)

    在JavaScript中,常用的跳转页面方法包括: 使用location对象的href属性跳转页面: 使用location对象的replace方法跳转页面(不会在浏览器历史记录中留下记录): 使用window对象的open方法打开新窗口或标签页: 使用a标签的click方法模拟点击跳转: 使用setTimeout函数延时跳转页面:

    2024年04月09日
    浏览(35)
  • 大型网站入口地址http到https的跳转方案

    首次输入 响应 目标 http://www.qq.com 301 Moved Permanently https://www.qq.com http://www.163.com 301 Moved Permanently https://www.163.com http://www.sohu.com 302 Found https://www.sohu.com http://www.sina.com.cn 302 Found https://www.sina.com.cn http://www.baidu.com 307 Internal Redirect https://www.baidu.com http://www.taobao.com 307 Internal Redir

    2024年02月05日
    浏览(41)
  • PHP8的跳转语句-PHP8知识详解

     如果循环条件满足的时候,则程序会一直执行下去。如果需要强制跳出循环,则需要使用跳转语句来完成。PHP8的跳转语句包括break语句、continue语句和goto语句。 1、break语句 break语句的作用是完全终止循环,包括while、do…while、for、switch在内的所有控制语句。 使用break语句来

    2024年02月13日
    浏览(51)
  • SwiftUI——如何使用新的NavigationStack和NavigationSplitView(如何页面跳转2.0以及如何制作侧栏)

    从 iOS 16 开始,苹果开始弃用原先的 NavigationView ,以后会逐渐完全淘汰掉。现在开始使用 NavigationStack 和 NavigationSplitView 。 NavigationStack 的效果和原本的 NavigationView 一样,而 NavigationSplitView 则和现在 iPadOS 上的 NavigationView 效果一样。 最近在 iPadOS 上面使用 NavigationView ,内容会

    2024年02月04日
    浏览(33)
  • 微信小程序、微信公众号、H5页面之间的跳转

    一、微信小程序与公众号 可关联已有的小程序或快速创建小程序,已关联的小程序可被使用在自定义菜单和模板消息等场景中。 公众号可关联同主体的 10 个微信小程序及不同主体的 3 个小程序,同一个小程序可关联最多 50 个公众号。 二、微信小程序与H5页面 1、微信小程序

    2024年02月06日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包