常见问题
受控与非受控
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。当前版本的虚拟列表能力基于 virtua 实现,并继续使用组件库内置 Scrollbar。Table 暂未接入该实现。
虚拟列表元素的渲染分为 固定高度、动态高度 两种情况:固定高度请使用 itemSize,动态高度请使用 minItemSize。virtua 会通过 ResizeObserver 自动测量实际尺寸,无需在两种模式之间手动切换底层渲染器。完整参数可参考 LLMs.txt。
| 参数名 | 描述 | 类型 | 默认值 | 版本 |
|---|---|---|---|---|
| keyField | 用于提取每项唯一键,支持字段名或函数 | string | ((item, index) => string | number) |
'key' |
|
| itemSize | 固定高度模式的 item 高度,传入后作为初始尺寸提示 | number | string | ((item, index) => number) |
- |
|
| minItemSize | 动态高度模式的最小 item 高度;未传 itemSize 时用于初始估算 |
number | string |
32 |
|
| buffer | 额外渲染缓冲区 | number |
200 |