基于vue3+ts+vite封装的动态表单,支持手动编辑生成页面表单配置并渲染使用,所有源码都在文章中
以下是一个简化版的Vue 3组件,使用TypeScript和Vite创建,用于演示如何封装一个动态表单并支持手动编辑生成页面表单配置:
<template>
<div>
<form @submit.prevent="submitForm">
<div v-for="(field, index) in formConfig" :key="index">
<label :for="field.name">{{ field.label }}</label>
<input
:type="field.type"
:name="field.name"
:value="field.value"
@input="updateFieldValue(index, $event)"
/>
</div>
<button type="submit">Submit</button>
</form>
</div>
</template>
<script lang="ts">
import { defineComponent, reactive } from 'vue';
interface FormField {
label: string;
name: string;
type: string;
value: string;
}
export default defineComponent({
name: 'DynamicForm',
setup() {
const formConfig = reactive<FormField[]>([
{ label: 'Name', name: 'name', type: 'text', value: '' },
{ label: 'Email', name: 'email', type: 'email', value: '' },
]);
function updateFieldValue(index: number, event: Event) {
const input = event.target as HTMLInputElement;
formConfig[index].value = input.value;
}
function submitForm() {
console.log(formConfig);
// 提交逻辑
}
return { formConfig, updateFieldValue, submitForm };
},
});
</script>
这个组件定义了一个DynamicForm
,它包含一个表单配置数组formConfig
。每个表单字段都有标签、名称、类型和值。updateFieldValue
方法用于更新表单字段值,而submitForm
方法用于处理表单提交。这个组件可以被嵌入到任何Vue应用中,并允许用户编辑和提交动态生成的表单。
评论已关闭