本文主要介绍Vue3中的表单写法。
在Vue3中,表单的使用和处理与Vue2中基本相同,但也有一些新的特性和改进。
<template>
<input v-model="message" />
</template>
<script>
export default {
data() {
return {
message: ''
};
}
};
</script>
<template>
<form @submit="submitForm">
<input v-model="email" :class="{ 'is-invalid': isInvalidEmail }" />
<button type="submit">Submit</button>
</form>
</template>
<script>
export default {
data() {
return {
email: '',
isInvalidEmail: false
};
},
methods: {
submitForm() {
if (this.email === '') {
this.isInvalidEmail = true;
} else {
// 处理表单提交逻辑
}
}
}
};
</script>
ref
来创建响应式的表单数据,并使用watch
来监视数据的变化。这样可以更简洁地处理表单的逻辑。<template>
<input v-model="email" />
</template>
<script>
import { ref, watch } from 'vue';
export default {
setup() {
const email = ref('');
watch(email, (newValue, oldValue) => {
// 处理表单数据的变化
});
return { email };
}
};
</script>
v-model
指令,并在组件内部定义value
和emit
事件来将表单数据传递给父组件。<template>
<custom-input v-model="email"></custom-input>
</template>
<script>
import { ref } from 'vue';
export default {
setup() {
const email = ref('');
return { email };
}
};
</script>
<template>
<input :value="value" @input="$emit('update:value', $event.target.value)" />
</template>
<script>
export default {
props: ['value']
};
</script>
以上是Vue3中表单的一些基本使用和特性。需要注意的是,在Vue3中,由于使用了Composition API,表单的处理可能会有一些不同的地方,如使用ref
、watch
等新的API来处理表单数据和校验。
在Vue3中,可以使用<script setup lang="ts">
语法来编写表单。这种语法是Vue3中的新特性,它结合了组合式API和单文件组件,提供了更简洁和可读性更高的代码编写方式。
下面是一个示例,展示了如何使用<script setup lang="ts">
语法来编写一个包含表单的组件:
<template>
<form @submit="handleSubmit">
<input v-model="form.email" type="email" placeholder="Email" />
<input v-model="form.password" type="password" placeholder="Password" />
<button type="submit">Submit</button>
</form>
</template>
<script setup lang="ts">
import { ref } from 'vue';
interface Form {
email: string;
password: string;
}
const form = ref<Form>({
email: '',
password: ''
});
const handleSubmit = (event: Event) => {
event.preventDefault();
// 处理表单提交逻辑
};
</script>
在上面的示例中,我们首先使用import
语句导入了ref
函数,用于创建响应式的form
对象。然后,我们定义了一个Form
接口,用于约束form
对象的类型。接着,我们使用ref
函数创建了一个名为form
的响应式对象,其中包含了email
和password
两个属性。
在<form>
标签中,我们使用@submit
指令绑定了一个handleSubmit
方法,用于处理表单的提交事件。在handleSubmit
方法中,我们使用preventDefault
阻止表单的默认提交行为,并在此处处理表单的提交逻辑。
在模板中,我们使用v-model
指令将表单元素与form
对象中的属性进行绑定,实现了表单数据的双向绑定。
总结起来,Vue3中使用<script setup lang="ts">
语法编写表单的过程与使用普通的Vue3组件编写方式相似,只是在编写数据和方法时,可以在<script>
标签中使用类似于Vue2中的data
、methods
等配置对象的方式进行编写,并且可以利用TypeScript来提供类型检查和约束。