如何在 Vue.js 3 设置中获取查询参数?

Nan*_*a Z 10 javascript vue.js vue-router vuejs3 vue-composition-api

我想创建搜索页面,单击其按钮后将重定向到另一个页面。而这个页面将会是这样的

http://localhost:8080/search?q=foo
Run Code Online (Sandbox Code Playgroud)

我的路由器index.js看起来像这样

const routers = [
  {
    path: '/search',
    name: 'Search',
    component: SearchPage,
    props: route => ( { query: route.query.q } )
  }
]
Run Code Online (Sandbox Code Playgroud)

问题是如何SearchPage在 Vue.js 3 中获取目标页面中的查询值?这个答案仍然让我感到困惑,因为没有使用组合 API 并且不在 vuejs 3 中

Dan*_*Dan 28

使用useRoute

您不需要将查询作为道具发送。使用它更好useRoute,因为它更简单,并且可以从任何组件访问它,而不仅仅是页面视图组件。

import { useRoute } from 'vue-router';

export default {
  setup() {
    const route = useRoute();
    console.log(route.query);
  }
}
Run Code Online (Sandbox Code Playgroud)

使用道具(不推荐)

首先更改路由器映射,以便query映射到query对象:

props: route => ({ query: route.query })
Run Code Online (Sandbox Code Playgroud)

在目标组件中SearchPage,创建一个将从路由器query接收对象的 prop :query

props: ['query']
Run Code Online (Sandbox Code Playgroud)

setup并通过参数访问它props

props: ['query']
Run Code Online (Sandbox Code Playgroud)