商品详情页的子路由

商品详情页的子路由

detail

首页列表->详情页

首页的子组件ShopsListItem.vue中

showDetail(id) {
	this.$router.push({
    	path: '/detail',
        query: { id }
    })
}

问题:子路由跳转参数不会随之携带

Detail.vue的mounted中就保存this.id = this.$router.query.id
传递给TabControl子组件:id = 'id'
TabControl中

@click="changeTab({ path: item.path })
changeTab(obj) {
	this.$router.push({
    	path: obj.path,
        query: { id: this.id }
    })
}

问题:回退路由,激活样式不会改变

子路由改变,应该在父路由中监听
父路由Detail中

currentPath: '/detail' //默认为/detail
watch: {
    $route: {
		handler(val) {
        	// console.log(val.path)
        	// console.log(oldval)
        	this.currentPath = val.path
		}
	}
}

把currentPath传个TabControl子组件中

:current-path="currentPath"

props: {
	currentPath: String
}

监听currentPath,实质监听路由变化(回退)

data() {
    return {
    	currentIndex: 0,
    	pathList: ['/detail', '/ratings', '/info']
    }
}
watch: {
    // 监听传过来的path值
    currentPath(val) {
    	// console.log(val)
    	this.currentIndex = this.pathList.findIndex(item => item === val)
    }
}

:class="currentIndex === index ? 'active' : ''"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值