如何在 setup() Vue 3 中访问 url GET 参数?

How to acess url GET parameter in setup() Vue 3?

这是我的 URL:http://localhost:8888/static/?foo=true Vue 3 应用程序通过它工作。

在 setup() 中我想获取 foo 参数。

这是我的代码:

import { useRoute } from 'vue-router';
import { defineComponent, reactive, ref, Ref, watch, createApp, onMounted} from 'vue';

export default defineComponent({
  name: 'App',
  
  setup() {
    onMounted(() => {
        const route = useRoute();
        console.log(route);
        console.log(route.params.foo);
        console.log(route.query.foo);
    });
  },
})

这就是我得到的:

谁能告诉我怎么做?

我认为根本问题是在 App.vue 组件的 onMounted 挂钩中触发它。那个时候路由实例可能还没有填充。你可以通过 console.log-ing onUpdated 挂钩中的 route.query 来测试它。解决方法可能是这样的:

const unwatch = watch(
  () => route.query,
  (newQuery) => {
    console.log(newQuery.foo);
    unwatch();
  }
);

基本上,您会为 route.query 分配一个观察者,并且在第一次更新后 - 观察者将被销毁。