vue中页面跳转白屏的解决方式,同一路由地址,参数不同跳转白屏的解决方式

路由地址的变化例如下面:

http://localhost:8080/#/category/1013001
 
-->地址相同,只有参数发生变化
 
http://localhost:8080/#/category/1013304

同一个地址携带不同的参数跳转内容并没有更新

原因:

地址的变化了,其实本路由对应的path并没有变化(还是#/category),是参数变化了。此时当前路径匹配的组件会被直接复用,这个组件在地址切换的过程中,并没有重新销毁生成,或导致页面白屏的情况出现,也就说,setup(vue3组合式API)只是执行了第一次。

解决方式:

1.强制销毁组件给router-view 添加key属性

<router-view :key="$route.fullPath"/> 

原理:https://cn.vuejs.org/api/built-in-special-attributes.html#key

2.使用watch侦听器,侦听路由参数的变化

将请求数据的逻辑代码放在侦听器中:

watch(() => route.params.id, (newVal) => {
      console.log('route.params.id变化了...', newVal)
​
    // 逻辑代码 ........
    
    }, { immediate: true })
    // immediate 侦听器的三个参数之一,作用:一进入页面就触发一次
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
引用提到,页面白屏的原因是因为路由无法匹配到正确的路径。当使用next(to.path)强制再次进入路由守卫时,可能会导致死循环,进而导致浏览器无法正常显示页面。 引用指出,当刷新页面时,控制台会输出错误信息,提示找不到匹配路径的路由。这可能是由于路由配置不正确,或者路由守卫没有正确触发。 引用提到,在控制台报错时,并没有进入路由守卫的情况。因此,在路由守卫配置任何内容或重新添加动态路由到session或vuex都是无效的,因为在进入路由守卫之前就已经出现了错误。 综上所述,vue路由跳转后页面白屏可能是由于路由配置错误,路由守卫未正确触发或者存在其他代码问题导致的。如果遇到这个问题,可以检查路由配置是否正确,确保路由守卫能够正常触发,并检查其他可能导致页面白屏的代码问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [真正有效解决vue addRoute动态添加路由后刷新页面白屏的靠谱方法及思路,切实可行!](https://blog.csdn.net/qq_37150410/article/details/128012829)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值