我目前正在建立一个Vue应用程序的登录.在教程(2021年2月)中,我看到这位同事创建了一个Setup方法,并将Vuereact 对象导入到组件中.只是为了收集表单数据!这就不能只用数据方法来完成吗?

HTML / Login Component

<template>
  <form action="/action_page.php" method="post">
    <div class="container">
      <input v-model="data.username" type="text" placeholder="Enter Username" name="username" required />
      <input v-model="data.password" type="password" placeholder="Enter Password" name="password" required />
      <button type="submit">Login</button>
      {{ data }}
    </div>

  </form>
</template>

1. New variant of databinding? Is that really necessary?

import {reactive} from 'vue';

export default {
    name: 'Login',
    setup() {
        const data = reactive({
            email: '',
            username: ''
        })

        return {
            data
        }
    }
}

2. Old and easy variant

export default {
    name: 'Login',
    data() {
        return {
            data: {
                email: '',
                username: ''
            },
            
        }
    },
}

推荐答案

data字段是选项API中的一个选项,您可以在其中声明可直接在模板内使用或在使用this的其他挂钩中访问的react 数据,其中此API中的所有内容都由选项datamethodscomputed组织.组件特征是重叠的,但在组合API中,代码是按特征组织的,可以在许多逻辑和组件中提取和重用这些特征.

在Vue 3中,仍然支持Options API,但建议使用组合API,尤其是script setup:

<script setup>
import {reactive} from 'vue';//can be auto imported in Nuxt or using auto import plugin in Vue SPA

const data = reactive({
            email: '',
            username: ''
        })
</script>
  

Javascript相关问答推荐

为什么新的Promises会在不需要的情况下被用来等待?

如何使用JavaScript动态地将CSS应用于ToDo列表?

如何使用Paged.js仅渲染特定页面

对象和数字减法会抵消浏览器js中的数字

成帧器运动中的运动组件为何以收件箱开始?

将json数组项转换为js中的扁平

IMDB使用 puppeteer 加载更多按钮(nodejs)

如何将连续的十六进制字符串拆分为以空间分隔的十六进制块,每个十六进制块包含32个二元组?

Google图表时间轴—更改hAxis文本 colored颜色

我不知道为什么setwritten包装promise 不能像我预期的那样工作

将现场录音发送到后端

从Node JS将对象数组中的数据插入Postgres表

简单的PayPal按钮集成导致404错误

如何迭代叔父元素的子HTML元素

变量在导入到Vite中的另一个js文件时成为常量.

TypeError:无法读取未定义的属性(正在读取';宽度';)

为什么我的按钮没有从&q;1更改为&q;X&q;?

触发异步函数后不能显示数据

令牌JWT未过期

有没有办法更改Chart.js 3.x.x中主要刻度的字体?