router 路由参数问题三种情况

第一种:get方法
传递值

<router-link :to="{path:'/test',query: { userId: 123,userName:'xia' }}">跳转</router-link>

<router-link :to="{name:'test',query: { userId: 123,userName:'xia' }}">跳转</router-link>


接收值(页面刷新的时候不会消失)

this.$route.query.userId  // 123
this.$route.query.userName  // xia


url上显示参数:http://localhost:8080/test?userId=123&userName=xia

第二种:post方法
传递值

<!-- 必须用 name:'test' -->
<router-link :to="{name:'test',params: { userId: 123,userName:'xia' }}">跳转</router-link>

<!-- 用 path:'/test' 无效 -->
<!-- <router-link :to="{path:'/test',params: { userId: 123,userName:'xia' }}">跳转</router-link> -->

接收值(页面刷新的时候就会消失)

this.$route.params.userId  // 123
this.$route.params.userName  // xia

url上不显示参数:http://localhost:8080/test

第三种:路由方法
传递值

// router.js
{
    path: '/test/:userId/:userName?', //?问号的意思是该参数不是必传项
    name: 'test',
    component: 'test.vue',
    props: true,
},

// App.vue
<router-link to="/test/123/xia">跳转</router-link>

接收值(页面刷新的时候不会消失)

this.$route.params.userId  // 123
this.$route.params.userName  // xia

url上显示参数:http://localhost:8080/test/123/xia

另外: 如果在链接上设置 replace 属性,当点击时,会调用 router.replace() 而不是 router.push(),于是浏览器不会留下 history 记录。(无法返回到上一页)

  <router-link :to="{ path: '/test'}" replace></router-link>

Tips:这里我简单说明下 $router 和 $route 的区别:
$router :是指整个路由实例,你可以操控整个路由,用法如下:
this.$router.go(-1);  // 向前或者向后跳转n个页面,n可为正整数或负整数
this.$router.push('/'); // 跳转到指定url路径,history栈中会有记录,点击返回会跳转到上个页面
this.$router.replace('/'); // 跳转到指定url路径,但是history栈中不会有记录,点击返回会跳转到上上个页面

$route:是指当前路由实例$router跳转到的路由对象;路由实例可以包含多个路由对象,它们是**父子包含关系**.
// 获取路由传递过来的参数
this.$route.params.userId  
this.$route.query.userName 
 

React Router是一个用于在React应用中进行路由控制的库。在React Router中,可以使用一些方法来取出路由参数。 一种常见的方法是通过使用`useParams`钩子函数来获取路由参数。`useParams`是React Router提供的一个自定义钩子函数,用于从URL中提取参数。可以在函数组件中使用它。例如,假设有一个路由路径为`/users/:id`,其中`:id`是一个参数,可以通过以下方式使用`useParams`来获取该参数: ```javascript import { useParams } from 'react-router-dom'; function User() { const { id } = useParams(); return ( <div> User ID: {id} </div> ); } ``` 在上述代码中,`useParams`返回一个包含所有路由参数的对象。在这个例子中,我们可以通过`id`属性来访问`/users/:id`路径中的参数。 还可以通过使用`withRouter`高阶组件来获取路由参数。`withRouter`是一个高阶组件,用于将路由相关的属性传递给包装的组件。例如,可以将路由参数作为属性传递给包装的组件: ```javascript import { withRouter } from 'react-router'; function User(props) { const { id } = props.match.params; return ( <div> User ID: {id} </div> ); } export default withRouter(User); ``` 在上述代码中,`props.match.params`对象包含了所有的路由参数。在这个例子中,可以通过`props.match.params.id`来访问`/users/:id`路径中的参数。 这些是两种常见的方法来取出React Router中的路由参数。可以根据具体的情况选择使用哪种方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值