vue中路由传参主要有下面几种。
第一种:query字符串写法
比如上一篇文章中,在student组件中给studentA传递参数,假设参数有两个id=1和name=2,那么可以写成下面这样
Student组件:
<template>
<div>
<span>我是student组件</span>
<br>
<ul>
<li>
<router-link to='/stu/stuA?id=1&name=2'>点击查看studentA</router-link>
</li>
<li>
<router-link to='/stu/stuB'>点击查看studentB</router-link>
</li>
</ul>
<div>
<router-view></router-view>
</div>
</div>
</template>
<script>
export default{
name:'Student',
}
</script>
参数接收用直接 this.&route即可
<template>
<div>
<span>我是teacherA组件!!!!!</span>
</div>
</template>
<script>
export default{
name:'StudentA',
mounted() {
console.log(this.$route);
},
}
</script>
效果:
第二种:query对象形式
<template>
<div>
<span>我是student组件</span>
<br>
<ul>
<li>
<router-link to='/stu/stuA?id=1&name=2'>点击查看studentA</router-link>
</li>
<li>
<router-link :to="{
path:'/stu/stuB',
query:{
id:12,
name:'kk'
}
}
">点击查看studentB</router-link>
</li>
</ul>
<div>
<router-view></router-view>
</div>
</div>
</template>
<script>
export default{
name:'Student',
}
</script>
接收参数的形式跟上面一样,效果类似。
第三种:params传参
首先要去路由配置里面,修改路由配置
我们把路由参考上面的方式配置,这样就可以通过param传参了,上面表示要传两个参数。
我们修改要跳转的路由:
这样的话,我们传递的name就是张三,type就是man
然后去这个组件里,打印我们传递的参数
console.log(this.$route);
第四种:params对象形式
params也支持对象形式,但是跳转时必须使用name,而不能使用path
这样我们去相应的组件打印路由信息, 可以看出,已经有参数正常传递了
第五种:props传参
1.对象形式
我们可以把想要传递的参数以对象形式进行传输,在接收数据的地方声明props即可。
2.布尔类型
如果布尔值为真,则把该路由收到的所有params参数,以props的形式传给要传的组件。
这种写法的问题是必须以params的方式传输。
3.函数类型
函数类型有返回值决定。强大之处在于,这个函数是回调函数,可以传递route,我们可以根据route的内容来决定到底传什么数据给其他组件。