当前位置: 首页 > 工具软件 > Keywatch > 使用案例 >

ts watch路由 参数变化_watch监听路由变化详解

宿鹏程
2023-12-01

一、watch监听路由的方法

通过watch监听,当路由发生变化的时候执行。

方法一:

watch:{

$router(to,from){

console.log(to.path)

}

}

方法二:

watch: {

$route: {

handler: function (val, oldVal){

console.log(val);

},

// 深度观察监听

deep: true

}

},

方法三:

watch: {

'$route' : 'getPath'

},

methods: {

getPath(){

console.log( this .$route.path);

}

}

二、key-用来阻止“复用”的

Vue 为你提供了一种方式来声明“这两个元素是完全独立的——不要复用它们”。只需添加一个具有唯一值的 key 属性即可(Vue文档原话)

computed: {

key() {

return this .$route.name !== undefined? this .$route.name + new Date(): this .$route + new Date()

}

}

使用computed属性和Date()可以保证每一次的key都是不同的,这样就可以如愿刷新数据了。

三、全局监听路由(通过vue-router的钩子函数beforeRouteEnter/beforeRouteUpdate/beforeRouteLeave)

一般会在router里面加跳转验证才会用到这个方法

方法一:

watch:{

$route(to,from){

if (to.path == '/' || to.path == '/Prisoner' || to.path == '/Goods' || to.path == '/Time' || to.path == '/Mine' ){

/**

* $store来自Store对象

* dispatch 向 actions 发起请求

*/

this .$store.dispatch( 'showTabBar' );

} else {

this .$store.dispatch( 'hideTabBar' );

}

}

},

beforeRouteEnter (to, from, next) {

// 在渲染该组件的对应路由被 confirm 前调用

// 不!能!获取组件实例 `this`

// 因为当钩子执行前,组件实例还没被创建

},

beforeRouteUpdate (to, from, next) {

// 在当前路由改变,但是该组件被复用时调用

// 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,

// 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。

// 可以访问组件实例 `this`

},

beforeRouteLeave (to, from, next) {

// 导航离开该组件的对应路由时调用

// 可以访问组件实例 `this`

},

方法二:

在app.vue的create中加入下面代码,然后进行判断

this.$router.beforeEach((to ,from,next) =>{

console.log(to);

next();

})

 类似资料: