我是Vue JS的新手,我必须说我真的很喜欢这个平台.我三天前才开始使用它.我正在try 获取URL查询参数,我也在使用vue路由.以下是我如何做到的:

http://localhost:8001/login?id=1

这是我的控制器的样子.

<template>
    <section class="contact-info-area">
        <div class="container">
            <div class="row">
                <div class="col-lg-12">
                    <section class="write-massage-area">
                        <div class="mb-5"></div>
                        <div class="row justify-content-center">
                            <div class="col-lg-5">
                                <div class="write-massage-content">
                                    <div class="write-massage-title text-center">
                                        <h3 class="title">Login {{ $route.query.id }}</h3> <!-- THIS IS WORKING -->
                                    </div>
                                    <div class="write-massage-input">
                                        <form @submit.prevent="onSubmitForm">
                                            <div class="row">
                                            
                                                <div class="col-lg-12">
                                                    <div class="input-box mt-10">
                                                        <input type="text" placeholder="Email"  v-model="form['email']">
                                                        <ErrorMessage :validationStatus="v$.form.email"></ErrorMessage>
                                                    </div>
                                                </div>
                                                <div class="col-lg-12">
                                                    <div class="input-box mt-10">
                                                        <input type="text" placeholder="Password"  v-model="form['password']">
                                                        
                                                    </div>
                                                </div>
                                                <div class="col-lg-12">
                                                    <div class="input-box mt-10 text-center">
                                                        <button type="submit" class="main-btn main-btn-2">Login</button>
                                                    </div>
                                                </div>
                                            </div>
                                        </form>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <div class="mb-5"></div>
                    </section>
                </div>
            </div>
        </div>
    </section>
</template>

<script>

import { ref } from 'vue'
import useVuelidate from '@vuelidate/core'
import { required, minLength, email } from '@vuelidate/validators'
import ErrorMessage from '../components/ErrorMessage'

export default {
    name: "login",
    components: {
        ErrorMessage
    },
    created(){
    },
    setup(){
        const form = ref({})

        const rules = {
            form: {
                email: {
                    required,
                    email
                },
                password: {
                    required,
                    minLength : minLength(5)
                }
            }
        }
        const v$ = useVuelidate(rules, { form })


        function onSubmitForm(){
            console.log(this.$route.query.id) **<!-- THIS IS NOT WORKING -->**
            v$.value.$touch()
            console.log(form.value)
        }

        return { form, onSubmitForm, v$}
    }
    
}
</script>

下面是上面的代码.在按钮提交时,我将使用一个名为onSubmitForm的函数,在这里我使用console.log(this.$route.query.id),但这给出了以下错误:

Uncaught TypeError: Cannot read property 'query' of undefined
    at Proxy.onSubmitForm (Login.vue?a55b:84)

为什么会这样?我在vue文档中也看到了这一点,他们以同样的方式提到了这一点.我错过了什么?

非常感谢.

推荐答案

您可以调用useRoute来访问查询参数...

<script setup>
import { useRoute } from 'vue-router'

const route = useRoute()
console.log(route.query)
</script>

Vue.js相关问答推荐

虚拟DOM在Vue中姗姗来迟

元素不会对react 性props 的更改做出react

从组件中检索 Shopware CMS 编辑器中的自定义实体数据

如何以惯用的方式触发 vue3 中同级组件的效果?

Vue 3组合式API如何测试是否发出正确的事件

vue 3 中范围样式和深度样式的问题

Vue,Composition API:如何从react 式转换中跳过深度嵌套的属性?

在 Vue 文件中创建根 Vue 实例

一个 div 组件中的 Vue.js 2.0 路由链接

当前端和后端位于虚拟 docker 网络中时,如何使用 axios 寻址后端主机

v-for 中的 VueJS 插槽

如何从 bootstrap-vue 模态监听事件?

如何更改 Vuetify 日历日期格式

我在 Nuxt 2.14.0 中运行的是什么版本的 Vue?

这是 v-on:change 的正确用法吗?

使用 nuxt,如何将路由名称放在页面标题中?

如何从组件内的单点捕获 vuejs 错误

依赖关系甚至在 package.json 和 node_modules 中都没有定义

如何在布局中使用组件?

将鼠标悬停在 TailwindCSS 中的 div 上时显示按钮