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

How to get query params in Vue.js 3 setup?

我想制作一个搜索页面,在我点击它的按钮后将被重定向到另一个页面。而这个页面会是这样

http://localhost:8080/search?q=foo

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

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

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

使用useRoute

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

import { useRoute } from 'vue-router';

export default {
  setup() {
    const route = useRoute();
    console.log(route.query);
  }
}

使用道具

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

props: route => ({ query: route.query })

在目标组件 SearchPage 中,创建一个 query 道具,它将接收来自路由器的 query 对象:

props: ['query']

并通过 props 参数在 setup 中访问它:

props: ['query'],
setup(props) {
  console.log(props.query.q);
  console.log(props.query.status);
}

您可以尝试另一种设置,通过 url 发送 propname { path: '/search/:propname', name: 'Search', component: SearchPage, props: true }, 在搜索页面上,在 created() 上你可以得到它 this.$route.params.propname