同级传参的两种方式(推荐使用query方式,防止页面刷新传值数据丢失)
【1】.query穿参,或者params传参
1.1、query方式
this.$router.push({path: '/', query: {参数名: '参数值'}) #父页传值跳转
var data = this.$route.query.参数名 #子页面接受值
1.2、params方式
this.$router.push({name: '/', params: {参数名: '参数值'}) #父页传值跳转
var b = this.$route.params.参数名 #子页面接受值
注意1: 使用params时不能使用path
注意2:实用params去传值的时候,在页面刷新时,参数会消失,用query则不会有这个问题。
【1】实例:由A向B 跳转
在A列表跳转页
//点击事件
goToSDetails:function (id) {
this.$router.push({
path:'./release',
query:{
nameId:this.list[id].nameCn},
})
},
B详情页
created:function(){
this.getParams();
},
watch: {
// 监测路由变化,只要变化了就调用获取路由参数方法将数据存储本组件即可
'$route': 'getParams'
},
methods:{
getParams:function(){
// 取到路由带过来的参数
var routerParams = this.$route.query.nameId
// 将数据放在当前组件的数据内
console.log("传来的参数=="+routerParams)
this.textareText = routerParams
},
}
二,下面也可以:
vue 组件之间使用eventbus传值:
链接:https://jingyan.baidu.com/article/72ee561a09027be16138dfd5.html
【三】、通过设置 Session Storage缓存的形式进行传递(这是h5的storage)
①两个组件A和B,在A组件中设置缓存orderData
const orderData = { 'orderId': 123, 'price': 88 }
sessionStorage.setItem('缓存名称', JSON.stringify(orderData))
②B组件就可以获取在A中设置的缓存了
const dataB = JSON.parse(sessionStorage.getItem('缓存名称'))
此时 dataB 就是数据 orderData