复用导致路由参数失效 – 蓝色星空岛 https://dlovel.com 只要仰望天空,世界就会变得很大,蓝色星空岛,技术博客,资源,工具,文章,生活 Mon, 18 Mar 2024 08:30:09 +0000 zh-Hans hourly 1 https://wordpress.org/?v=7.1.2 https://dlovel.com/wp-content/uploads/2022/04/cropped-cropped-微信图片_20210720153146-80x80.jpg 复用导致路由参数失效 – 蓝色星空岛 https://dlovel.com 32 32 简述vue-router 组件复用导致路由参数失效怎么办? https://dlovel.com/%e7%ae%80%e8%bf%b0vue-router-%e7%bb%84%e4%bb%b6%e5%a4%8d%e7%94%a8%e5%af%bc%e8%87%b4%e8%b7%af%e7%94%b1%e5%8f%82%e6%95%b0%e5%a4%b1%e6%95%88%e6%80%8e%e4%b9%88%e5%8a%9e%ef%bc%9f/ https://dlovel.com/%e7%ae%80%e8%bf%b0vue-router-%e7%bb%84%e4%bb%b6%e5%a4%8d%e7%94%a8%e5%af%bc%e8%87%b4%e8%b7%af%e7%94%b1%e5%8f%82%e6%95%b0%e5%a4%b1%e6%95%88%e6%80%8e%e4%b9%88%e5%8a%9e%ef%bc%9f/#respond Wed, 20 Mar 2024 00:29:00 +0000 https://dlovel.com/?p=853 当使用 Vue Router 中的组件复用功能时,有时会导致路由参数失效的情况。这是因为 Vue Router 默认情况下会复用相同组件实例,而不会重新创建新的实例,导致路由参数没有更新。解决这个问题可以通过以下几种方式:

  1. watch $route 变化:在需要复用的组件中,可以通过监听 $route 对象的变化来手动更新组件内部的数据。当路由参数发生变化时,可以在 watch 中监听到,并进行相应的处理。
watch: {
  $route(to, from) {
    // 根据新的路由参数 to.params 更新组件数据
  }
}
  1. 使用 beforeRouteUpdate 导航守卫:Vue Router 提供了 beforeRouteUpdate 导航守卫,可以在路由参数发生变化时捕获这一变化并执行相应的逻辑。
beforeRouteUpdate (to, from, next) {
  // 根据新的路由参数 to.params 更新组件数据
  next();
}
  1. 通过 key 属性强制组件重新渲染:在路由视图组件中,可以通过给组件添加 key 属性,并设置为路由参数的某个值,来强制使组件重新渲染,从而更新路由参数。
<router-view :key="$route.fullPath" />

通过以上方法,我们可以有效地解决组件复用导致路由参数失效的问题,确保在路由参数发生变化时能够正确地更新组件内容。

]]>
https://dlovel.com/%e7%ae%80%e8%bf%b0vue-router-%e7%bb%84%e4%bb%b6%e5%a4%8d%e7%94%a8%e5%af%bc%e8%87%b4%e8%b7%af%e7%94%b1%e5%8f%82%e6%95%b0%e5%a4%b1%e6%95%88%e6%80%8e%e4%b9%88%e5%8a%9e%ef%bc%9f/feed/ 0