Transfer 穿梭框
Rue 的 Transfer 维持当前设计体系的轻量卡片感,但 API 心智尽量向成熟双栏穿梭组件靠拢。 现在它支持受控与默认值两套写法、搜索过滤、分页、单向模式、render props 自定义列表体,以及更细的标题、操作按钮和底部扩展位。
State Model
dataSource + targetKeys + selectedKeys
用 key 驱动归属和顺序。
Search & Flow
搜索、分页、单向搬运
适合大列表,也支持只保持向右加入的发布流。
Render Props
不止是默认列表
可把列表体换成卡片、表格或任意自定义布局。
# 基础受控模式
最常见的受控用法:外部维护 targetKeys 与 selectedKeys。
已加入
2
当前选中
0
目标顺序
growth-labcontent-engine
# 搜索、分页与底部扩展
适合较大的素材池或配置列表;搜索默认基于 render.value 和文本字段匹配。
# 单向模式与禁用项
适合发布清单、开关方案或只允许逐步加入的流程;右侧保持移出能力。
Accessibility Review 被标记为禁用项,已经进入方案后也不会被误移出,适合承载强约束配置。
# Render Props 自定义列表体
用 renderList 接管列表体,可以把默认列表改造成卡片板位。
API
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
dataSource | 左侧候选数据源,目标列由 targetKeys 决定顺序和归属。 | TransferItem[] | [] |
targetKeys / defaultTargetKeys | 受控与非受控的目标列 key 集合。 | TransferKey[] | [] |
selectedKeys / defaultSelectedKeys | 两侧当前选中项,内部会自动按方向拆分。 | TransferKey[] | [] |
render | 自定义每项的主内容,支持返回 { label, value, description }。 | (item) => any | - |
showSearch / filterOption | 显示搜索框,并自定义搜索命中逻辑。 | boolean | object / function | false / - |
titles / actions / operations | 配置左右标题和中间操作按钮文案。 | any[] | ['待选择', '已加入'] / ['加入', '移出'] |
onChange | 完成搬运后触发,返回 targetKeys、方向与 moveKeys。 | (targetKeys, direction, moveKeys) => void | - |
onSelectChange | 选中项变化时触发,分别返回左右两侧选中的 key。 | (sourceSelectedKeys, targetSelectedKeys) => void | - |
oneWay | 切到单向模式,只保持向右加入按钮,并在右列提供移出能力。 | boolean | false |
pagination | 开启轻量分页,支持 pageSize。 | boolean | { pageSize?: number } | false |
footer | 为每个列表底部追加扩展信息或操作。 | (listProps, { direction }) => any | - |
renderList | render props 自定义列表体,适合做卡片、表格或树形穿梭。 | (listProps) => any | - |
listStyle / operationStyle / classNames / styles | 对列容器、操作区和语义节点做样式增强。 | object | function | - |