跳转的代码:
<nuxt-link :to="'/course/search?keyword='+keyword+'&mt=' + category_v.id" >{{category_v.name}}
</nuxt-link>
监听的代码:
```watch: {
'$route': 'search'
}
预计情况下,在页面点击一次nuxt-link 标签,路由变化一次,触发一次 search事件;实际情况是,路由发送一次变化,但是 search 没有触发,只有在点击另外一个nuxt-link 标签,使路由在发生一次变化,才可以触发search事件,之后每一次点击都可以触发 监听
即:第一次点击nuxt-link 产生的路由变化没有触发监听事件
参考GPT和自己的思路:
根据你提供的信息,这个问题可能是由于 watch 的事件机制造成的。在加载页面时,'$route'
事件已经发生了一次,所以第一次点击 nuxt-link
标签时,watch
事件没有被触发。而在点击另一个 nuxt-link
标签之后,又发生了一次路由变化,这次事件触发了 watch
,所以之后的每一次点击都可以触发 watch
事件。
为解决这个问题,你可以在组件的 created
生命周期钩子函数里面手动触发 search
事件。这样,在页面加载后就会立即触发 search
事件,从而保证第一次点击 nuxt-link
标签可以正常触发事件。你可以像下面这样修改代码:
created() {
this.search();
},
watch: {
$route: 'search'
},
methods: {
search() {
// ...
}
}
希望这可以帮助你解决问题。