推送路由(从 vueJS 迁移到 nuxtJS)

Push a route (Moving from vueJS to nuxtJS)

我正在将 VueJS 项目转换为 Nuxt.js,但我无法理解 nuxt 如何处理路由。它的文档没有提到任何关于推送路由的内容。

使用 VueJS 我在组件中有以下内容。

 //template
 <input class="" type="search"
        name="q" id="q" v-model="q"
        @keyup.enter="submitSearch"
 >
 //script
  methods: {
        submitSearch() {
            this.$route.push({name: 'search', query: {q: this.q}});

            //also tried the following
            //nuxt.$router.push({name: 'search', query: {q: this.q}});

        }
    }

但这在 Nuxt 中不起作用。发出警报('嗨);在 submitSearch 中触发正常,但我从未被重定向到路由。

这里的目标是当用户在搜索栏中按下回车键时,重定向到 /search?q=blablabla

编辑:

问题是用户被重定向到 /?q=blablabla 而不是 /search?..

我才发现这是因为多语种路线有不同的名字。

我如何推送到动态命名为 search__en 而不是“search”的路由名称?

我最后的做法是:

this.$router.push({path: this.localePath('search'), query: {q: this.q}});

不是直接的答案,但在使用散列法时我发现它很管用。以后有什么问题会回来编辑的

this.$router.push(#${hash});

Nuxt v2.14.12 遇到了同样的问题。经过一些挖掘后发现 this.$nuxt.$options.router 下的 router 对象是一个 Nuxt Helper。目前 this.$nuxt.$options.router.push() 工作正常。

这就是在 Nuxt3 中使用 Composition API

可以完成的方法
<script setup>
const router = useRouter()
const moveToIndex = () => router.push({ name: 'about' })
</script>

<template>
  <button @click="moveToIndex">move to about page</button>
</template>

选项 API 仍然以完全相同的方式工作。