【vue3】监听路由的写法以及路由更新但是页面内容不更新的解决方案

以下是vue3使用watch监听路由的写法

watch(
  () => router.currentRoute.value,
  (newValue: any) => {
  	// 此处写监听路由后要执行的事情
    if(newValue.fullPath === '/manage/racking') {
      getList()
    }
  },
  { immediate: true }
)

注意:如果想通过监听路由变化的方式去刷新页面,解决路由更新页面不更新的问题,要把immediate: true去掉,不然就会进入回调地狱

因为:

  • watch函数会在组件初始化时执行一次,设置immediate: true,watch函数会在路由发生变化时再次执行。
  • router.go(0)是刷新当前页面,如果设置immediate: true,组件初始化时执行一次router.go(0),路由发生变化时又执行router.go(0),
  • router.go(0)刷新页面会触发组件初始化,组件初始化又会触发watch函数执行router.go(0),并且触发路由发生变化执行router.go(0),如此反复,便造成了页面一直刷新的情况。
  • 不设置immediate: true,watch函数只会在路由发生变化时执行router.go(0),不会一直刷新页面。
watch(
  () => router.currentRoute.value,
  (newValue: any) => {
    router.go(0)
  },
)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值