常见问题
受控与非受控
Section titled “受控与非受控”SD Design Vue 组件库中使用了 受控 的概念,正如其名,组件的显示状态将始终与传入值相同。我们推荐通过受控模式来使用输入组件。
这时可以通过 双向绑定(v-model) 或者 change 事件来修改 model-value 的值,来保证组件内部与外部的值相同。
在受控模式中,如果希望控制显示的值,可以使用 change 事件进行处理。
如果我们不希望控制组件的值,可以使用非受控模式,此时组件的值将维护在组件内部,可以通过 default-value 来设置初始值。非受控模式下可以通过 change 事件来获取组件的值。
特别注意:default-* 类属性用来设置非受控模式下的初始值,不会影响后续的状态。此值与受控值同时使用时,受控值优先生效。
下拉菜单的滚动跟随
Section titled “下拉菜单的滚动跟随”下拉菜单默认会跟随 window 滚动条的变化更新位置,如果将包含下拉菜单的组件放置在一个可滚动的容器中,会出现容器滚动时下拉菜单没有更新位置的问题,此时可以通过组件内部的 trigger 配置,将 updateAtScroll 设置为 true 开启滚动更新的支持。
如果项目内此场景较多,可以通过 ConfigProvider 组件全局开启此属性。
虚拟列表的使用
Section titled “虚拟列表的使用”支持设置虚拟列表的组件包括 List、Select、Tree,以及复用这些能力的 AutoComplete、Cascader、TreeSelect。当前版本的虚拟列表能力已经切换到 vue-virtual-scroller,并继续使用组件库内置 Scrollbar。Table 本次不在新语义范围内。
虚拟列表元素的渲染分为 固定高度、动态高度 两种情况:固定高度请使用 itemSize,动态高度请使用 minItemSize。完整迁移说明见 虚拟列表迁移。
| 参数名 | 描述 | 类型 | 默认值 | 版本 |
|---|---|---|---|---|
| keyField | 用于提取每项唯一键,支持字段名或函数 | string | ((item, index) => string | number) | 'key' | |
| itemSize | 固定高度模式的 item 高度,传入后使用 RecycleScroller | number | string | ((item, index) => number) | - | |
| minItemSize | 动态高度模式的最小 item 高度;未传 itemSize 时使用 DynamicScroller | number | string | 32 | |
| buffer | 额外渲染缓冲区 | number | 200 |