You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue组件化登录表单无法运行问题求助(附教程链接与代码)

排查你的Vue组件登录表单代码问题

嘿,作为Vue初学者遇到这种问题太正常啦,我帮你梳理了代码里的几个关键语法错误,正是这些问题导致代码无法运行,咱们一步步来修正:


问题1:中文引号引发的语法错误

你的组件template里用了中文单引号(‘ ’),JavaScript只识别英文引号,而且多行模板字符串需要用**英文反引号(``)**包裹,这是最直接导致代码报错的原因。

问题2:根实例中data的语法错误

根Vue实例里的data()写法有误,你写成了data():{——这里多了个冒号,正确的写法是data() {(data是一个函数,不是对象的键值对)。

问题3:表单提交的默认行为(可选优化)

这不是代码不运行的核心原因,但表单提交时浏览器会默认刷新页面,建议在handleSubmit方法里阻止这个行为,避免提交后页面重置,影响调试体验。


修正后的完整代码

<!DOCTYPE html>
<html>
<head>
<title>vueComponents</title>
<style type="text/css">
[v-cloak]{
display: none;
}
input {
margin: 10px;
display: block;
}
</style>
</head>
<body>
<div id="app" v-cloak>
<login-form />
</div>
<script src="https://unpkg.com/vue@next"></script>
<script>
let app = Vue.createApp({
  data() { // 去掉多余的冒号,修正data函数写法
    return {
      greeting: 'hello VUE',
    }
  }
})

app.component('login-form', {
  // 用英文反引号包裹多行模板字符串
  template: `
    <form @submit="handleSubmit">
      <h1> {{ title }} </h1>
      <input type="email" />
      <input type="password" />
      <button>Log In</button>
    </form>
  `,
  data(){
    return{
      title:'Login Form'
    }
  },
  methods:{
    handleSubmit(e) { // 添加事件参数e
      e.preventDefault(); // 阻止浏览器默认的表单刷新行为
      console.log('submitted')
    }
  }
})

app.mount('#app')
</script>
</body>
</html>

关键修正点说明

  • 把template里的中文引号全部替换成英文反引号``,确保多行模板被正确解析。
  • 修复根实例中data()的语法,让它成为一个符合Vue要求的函数。
  • 在handleSubmit方法中添加e.preventDefault(),阻止浏览器默认的表单提交刷新行为,这样点击提交按钮后就能在控制台看到submitted的日志输出了。

现在你再运行代码,应该就能正常显示登录表单,功能也能正常工作啦!

内容的提问来源于stack exchange,提问作者jingyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 12:32:44