【Vue3+Vite+TS】13.0 组件十:强大的表单组件(上)
Author: 图恩Category: 编程开发Views: 817Published: 2022-05-11 为实现一个支持子元素组件的表单系统,需确保以下关键点的正确性:
---
### **1. 子元素组件的动态渲染**
在渲染子组件时,需确保:
- **正确传递参数**:将`item.children`作为参数传递给子组件,确保其类型(如`'option'`)和属性(如`label`、`value`)正确。
- **条件判断处理**:当`item.children`为空时,避免渲染无效内容。
**修改示例:**
```vue
```
---
### **2. 表单数据初始化**
确保从父组件传递的`options`数据正确映射到`model`和`rules`中。
**修改示例:**
```js
onMounted(() => {
if (props.options && props.options.length) {
initForm();
}
});
const initForm = () => {
let m = {};
let r = {};
props.options.forEach(item => {
m[item.prop!] = item.value;
r[item.prop!] = item.rules;
});
model.value = cloneDeep(m);
rules.value = cloneDeep(r);
};
```
---
### **3. 验证规则的正确传递**
确保`rules`数据正确传递给`el-form`,以便在表单提交时触发验证。
**修改示例:**
```vue
```
---
### **4. 选中项与子组件的绑定**
在`select`组件中,需确保子组件的`type`为`'option'`,并正确传递`value`和`label`。
**修改示例:**
```vue
```
---
### **5. 多选与单选组件的处理**
- **checkbox-group**:确保每个`checkbox`的`value`和`label`正确绑定。
- **radio-group**:确保`radio`组件的`value`和`label`正确传递。
**修改示例:**
```vue
```
---
### **6. 样式与布局**
确保子组件的样式正确,如:
- `select`组件的`style`设置为`width: 100%`。
- `checkbox-group`和`radio-group`的布局逻辑正确。
**修改示例:**
```vue
```
---
### **最终效果**
通过上述调整,表单将支持:
- 动态渲染子元素(如`option`、`checkbox`、`radio`)。
- 正确绑定`v-model`和验证规则。
- 保持表单数据与父组件的同步。
**示例输出:**
- `select`组件显示选项列表。
- `checkbox-group`和`radio-group`正确渲染选中项。
- 表单提交时触发验证规则。
---
**总结**:关键在于确保子组件的参数正确传递、验证规则与表单数据同步,并通过条件判断处理渲染逻辑,最终实现功能完整且美观的表单系统。