仅针对特定路径的Nuxt监视路由

2022-02-25 00:00:00 vue.js nuxt.js

我在我的应用程序中显示了一些图像。假设图像显示在domain.com/wallPaper路径上。 我使用FETCH()方法显示,并使用此代码查看query和params。

watch: {
  "$route.query": "$fetch"
},
async fetch() {
  console.log("fetched");
  //My Code
},

它在相同的路线上工作得很好。但是,当我转到主页或任何其他页面时,这个FETCH()也会被调用一次。 如何在更改到其他路由时停止调用此方法?


解决方案

此类代码应该可以完成此工作。

<template>
  <div>
    <button @click="$router.push({ name: 'wallpaper', query: { search: 'mountains' } })">
      look for mountains
    </button>
    <button @click="$router.push({ name: 'wallpaper', query: { search: 'nuxt' } })">
      look for nuxt
    </button>
    <button @click="$router.push({ name: 'index' })">
      Go back to the homepage
    </button>
  </div>
</template>

<script>
export default {
  watch: {
    async $route(to, from) {
      if (to.name !== 'wallpaper') return // if you're going to somewhere else than `wallpaper`
      // the `return` will end the execution and not go further

      console.log('fetch logic here in case you stay on the wallpaper route name')
      await this.fetch()
    },
  },
}
</script>

您还可以在更改查询时再次调用fetch()方法。

相关文章