vue.js Nuxt仅针对特定路径监视路由

insrf1ej  于 2023-08-07  发布在  Vue.js
关注(0)|答案(2)|浏览(147)

我在我的应用程序中显示了一些图像。假设图像显示在 * domain.com/wallpaper * 路由上。我展示了fetch()方法,并使用此代码查看查询和参数。

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

字符串
它在同一条路上运行良好。但是当我转到主页或任何其他页面时,这个fetch()也会被调用一次。如何在更改到另一个路由时停止调用此方法?

xmakbtuz

xmakbtuz1#

这种代码应该可以完成这项工作。

<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()方法。

3bygqnnd

3bygqnnd2#

对于Nuxt2,您可以使用watchQuery仅监视查询更新。
https://nuxtjs.org/docs/2.x/components-glossary/pages-watchquery

**示例:**只要查询参数发生变化,就会立即执行Fetch,但路由发生变化时不会执行Fetch:

export default {
  watchQuery: ['any-query-param'],

  async fetch() {
    ...
  }
}

字符串

相关问题