background: #CCC;
}
```
-~~~
+````
#### 2.1.2 API 规范(A)
@@ -243,23 +241,22 @@ API 是组件的属性解释,给开发者作为组件属性配置的参考。
##### 通用命名
-| API 名称 | 类型 | 描述 | 常见变量 |
-| :------------- | :------------- | :----------------------------------------------------------- | :---------------------------------------------------- |
-| shape | string | 形状,从组件的外形来看有区别的时候,使用 shape | |
-| direction | enum | 方向,取值采用缩写的方式。 | hoz(水平), ver(垂直) |
-| align | enum | 对齐方式 | tl, tc, tr, cl, cc, cr, bl, bc, br |
-| status | enum | 状态 | normal, success, error, warning |
-| size | enum | 大小 | small, medium, large 更大或更小可用 (xxs, xs, xl, xxl) |
-| type | enum or string | 分类:1. dom 结构不变、只有皮肤的变化 2.组件类型只有并列的几类 | normal, primary, secondary |
-| visible | boolean | 是否显示 | |
-| defaultVisible | boolean | 是否显示(非受控) | |
-| disabled | boolean | 禁用组件 | |
-| closable | bool/string | 允许关闭的方式 | |
-| htmlType | string | 当原生组件与 Fusion 组件的 type 产生冲突时,原生组件使用 `htmlType` | |
-| link | string | 链接 | |
-| dataSource | array | 列表数据源 | [{label, value}, {label, value}] |
-| has+'属性' | boolean | 拥有某个属性 | 例如 `hasArrow`, `hasHeader`, `hasClose` 等等 |
-
+| API 名称 | 类型 | 描述 | 常见变量 |
+| :------------- | :------------- | :------------------------------------------------------------------ | :----------------------------------------------------- |
+| shape | string | 形状,从组件的外形来看有区别的时候,使用 shape | |
+| direction | enum | 方向,取值采用缩写的方式。 | hoz(水平), ver(垂直) |
+| align | enum | 对齐方式 | tl, tc, tr, cl, cc, cr, bl, bc, br |
+| status | enum | 状态 | normal, success, error, warning |
+| size | enum | 大小 | small, medium, large 更大或更小可用 (xxs, xs, xl, xxl) |
+| type | enum or string | 分类:1. dom 结构不变、只有皮肤的变化 2.组件类型只有并列的几类 | normal, primary, secondary |
+| visible | boolean | 是否显示 | |
+| defaultVisible | boolean | 是否显示(非受控) | |
+| disabled | boolean | 禁用组件 | |
+| closable | bool/string | 允许关闭的方式 | |
+| htmlType | string | 当原生组件与 Fusion 组件的 type 产生冲突时,原生组件使用 `htmlType` | |
+| link | string | 链接 | |
+| dataSource | array | 列表数据源 | `[{label, value}, {label, value}]` |
+| has+'属性' | boolean | 拥有某个属性 | 例如 `hasArrow`, `hasHeader`, `hasClose` 等等 |
##### 多选枚举
@@ -287,13 +284,15 @@ true 表示触发规则都会关闭,false 表示触发规则不会关闭。
##### 表单规范
- 支持[受控模式](https://reactjs.org/docs/forms.html#controlled-components)(value + onChange) (A)
- - value 控制组件数据展现
- - onChange 组件发生变化时候的回调函数(第一个参数可以给到 value)
+ - value 控制组件数据展现
+ - onChange 组件发生变化时候的回调函数(第一个参数可以给到 value)
- `value={undefined}`的时候清空数据,field 的 reset 函数会给所有组件下发 undefined 数据 (AA))
- 一次完整操作抛一次 onChange 事件 `建议` 比如有 Process 表示进展中的状态,建议增加 API `onProcess`;如果有 Start 表示启动状态,建议增加 API `onStart` (AA)
##### 属性的传递
+
**1. 原子组件(Atomic Component)**
+
> 最小粒子,不能再拆分的组件
举例:Input/Button/NumberPicker
@@ -317,15 +316,15 @@ true 表示触发规则都会关闭,false 表示触发规则不会关闭。
复合组件一般由两个及以上的原子组件/复合组件构成,比如:Select 由 Inupt + 弹窗组成,Search 由 Select + Button 组成,TreeSelect 由 Tree + Select 组成。
为了提高组件使用的便利性,对 API 属性的要求如下:
+
1. 复合组件核心的原子组件(比如 Search 的核心原子组件是 Input)的属性以及使用频率高的属性建议扁平化,让复合组件可以直接使用其属性;
2. 复合组件内的非核心原子组件,则通过 `xxxProps` (如 inputProps/btnProps)的方式,将参数传递到相应原子组件上。
-
**属性扁平化例子**:
比如 `Search` 组件由 `Input` 和 `Button` 构成,但是 `Search` 更像是 `Input` ,因此把 `Input` 作为主要组件,将属性扁平化。即在 `Search` 组件上直接使用一些 `Input` 的属性。 `
`
-比如 `Select` `TreeSelect` 都有弹层部分,`Overlay` `Overlay.Popup` 的 `visible` 属性使用率较高,一般用于 fixed 布局下的弹窗滚动跟随。因此把该属性暴露到最外层,简化使用 `