用uve和vue-router开发移动页面时,在一个二级路由页面想根据不同的参数展示不同的内容,并且有过渡效果:
在网上搜罗了一下监听路由参数变化然后刷新组件的方式有好多种
-
1,为相同路由跳转进行中间路由替换(全局守卫进行拦截,这种方法我没试)
-
2,使用v-if重新渲染当前页面组件,大体在data中设置一个boolean变量,然后定义一个reload方法,在方法中动态改变
boolean变量的值。需要重新渲染组件的时候只要调用 下reload方法就可以。 -
3,最简单快速的方法:
利用vue组件中的key值来强制刷新(可以自行去查官方文档 )`<router-view :key="newsId"></router-view>`
监听组件刷新问题结束后,第二个就是滑动时改成路由参数,在滑动方法中增加
this.$router.push({path:'subNews',query:{newsId: this.newsId}})
这里就会用到路由中query 和params传参的区别首先说明下 $router 和 $route 的区别
- $router : 是路由操作对象,只写对象
- $route : 路由信息对象,只读对象
在router-view 组件内部用
console.log(this.$route.query.newsId)
到此问题解决