在A页面里利用$router.push({path:'/views/purchase', query: {orderID: res}});跳转到purchase页面,在purchase页面获取不到A页面传过来的值。
A页面的代码:
this.$hprose1.mashangmai(token,product_id,num, Sku_id, ).then(function (res) {
console.log('订单ID', res)
that.$router.push({path:'/views/purchase', query: {orderID: res}});
// that.orderID = res
},function(err){
console.log(err);
});
purchase页面获取参数的代码:
mounted() {
that.$route.query.orderID
}
,然后就一直获取不到,显示undefined,只有在mounted里写一个延时器才能获取到A页面传过来的参数,求解。
在Vue中,router.push
可以用来导航到新的路由,并且可以传递参数。如果你在某个页面通过以下方式传递参数:
javascript
this.$router.push({ path: '/target', query: { id: someId } })
然后在目标页面(组件)的mounted
生命周期钩子中尝试获取参数,应如下操作:
javascript
mounted() {
console.log(this.$route.query.id) // 获取query参数
}
如果在mounted
钩子中仍然获取不到参数,请检查以下几点:
vue-router
,并能访问到this.$route
。传递:
javascript
this.$router.push({ name: 'target', params: { id: someId } })
接收:
javascript
mounted() {
console.log(this.$route.params.id) // 获取params参数
}
检查目标页面的路由配置是否正确设置。例如,带有动态参数的路径应为 /target/:id
。
如果是因为页面加载速度快于参数传递速度导致的问题,可以尝试在beforeRouteUpdate
或watch
$route
变化来获取参数。