# useFormConfig Hook 使用文档
## 概述
`useFormConfig` 是一个响应式表单配置 Hook,根据当前语言自动调整表单样式,支持自定义配置。
## 基础用法
### 默认配置
```javascript
import { useFormConfig } from '@/hooks/useFormConfig';
const { formLabelWidth, formLayout } = useFormConfig();
```
**默认值:**
- 中文标签宽度:`120px`
- 英文标签宽度:`160px`
### 在模板中使用
```vue
```
## 自定义配置
### 1. 自定义标签宽度
```javascript
// 方式1:分别设置中英文宽度
const { formLabelWidth } = useFormConfig({
zhWidth: '100px', // 中文宽度
enWidth: '140px' // 英文宽度
});
// 方式2:使用自定义宽度对象
const { formLabelWidth } = useFormConfig({
customWidths: {
zh: '100px',
en: '140px'
}
});
```
### 2. 自定义间距和字体
```javascript
const { formLabelWidth, formItemSpacing, inputPlaceholderStyle } = useFormConfig({
zhWidth: '100px',
enWidth: '140px',
spacing: {
zh: '16px',
en: '20px'
},
fontSize: {
zh: '13px',
en: '12px'
}
});
```
### 3. 自定义按钮尺寸
```javascript
const { buttonSize } = useFormConfig({
defaultButtonSize: 'small' // 'large' | 'default' | 'small'
});
```
## 完整配置选项
```javascript
const options = {
// 标签宽度配置
zhWidth: '120px', // 中文标签宽度
enWidth: '160px', // 英文标签宽度
customWidths: { // 自定义宽度对象(优先级最高)
zh: '100px',
en: '140px'
},
// 间距配置
spacing: {
zh: '20px', // 中文表单项间距
en: '24px' // 英文表单项间距
},
// 按钮配置
defaultButtonSize: 'default', // 按钮尺寸
// 字体配置
fontSize: {
zh: '14px', // 中文字体大小
en: '13px' // 英文字体大小
}
};
const formConfig = useFormConfig(options);
```
## 返回值
```javascript
const {
// 基础配置
formLabelWidth, // 响应式标签宽度
formItemSpacing, // 响应式表单项间距
buttonSize, // 按钮尺寸
inputPlaceholderStyle, // 输入框占位符样式
validationMessageStyle, // 验证消息样式
formLayout, // 完整表单布局配置
// 响应式配置
responsiveFormConfig, // 响应式宽度配置
// 便捷方法
getCurrentLanguage, // 获取当前语言
} = useFormConfig();
```
## 使用场景
### 场景1:标准表单(使用默认配置)
```vue
```
### 场景2:紧凑表单(较小的标签宽度)
```vue
```
### 场景3:宽松表单(较大的标签宽度)
```vue
```
### 场景4:完整样式配置
```vue
提交
```
## 注意事项
1. **优先级**:`customWidths` > `zhWidth/enWidth` > 默认值
2. **响应式**:所有配置都是响应式的,语言切换时自动更新
3. **单位**:宽度配置需要包含单位(如 `'120px'`)
4. **兼容性**:支持所有 Element Plus 表单组件