logoAnt Design

⌘ K
  • 设计
  • 研发
  • 组件
  • 博客
  • 资源
  • 国内镜像
5.20.6
  • 组件总览
  • 通用
    • Button
      按钮
    • FloatButton
      悬浮按钮
      5.0.0
    • Icon
      图标
    • Typography
      排版
  • 布局
    • Divider
      分割线
    • Flex
      弹性布局
      5.10.0
    • Grid
      栅格
    • Layout
      布局
    • Space
      间距
  • 导航
    • Anchor
      锚点
    • Breadcrumb
      面包屑
    • Dropdown
      下拉菜单
    • Menu
      导航菜单
    • Pagination
      分页
    • Steps
      步骤条
  • 数据录入
    • AutoComplete
      自动完成
    • Cascader
      级联选择
    • Checkbox
      多选框
    • ColorPicker
      颜色选择器
      5.5.0
    • DatePicker
      日期选择框
    • Form
      表单
    • Input
      输入框
    • InputNumber
      数字输入框
    • Mentions
      提及
    • Radio
      单选框
    • Rate
      评分
    • Select
      选择器
    • Slider
      滑动输入条
    • Switch
      开关
    • TimePicker
      时间选择框
    • Transfer
      穿梭框
    • TreeSelect
      树选择
    • Upload
      上传
  • 数据展示
    • Avatar
      头像
    • Badge
      徽标数
    • Calendar
      日历
    • Card
      卡片
    • Carousel
      走马灯
    • Collapse
      折叠面板
    • Descriptions
      描述列表
    • Empty
      空状态
    • Image
      图片
    • List
      列表
    • Popover
      气泡卡片
    • QRCode
      二维码
      5.1.0
    • Segmented
      分段控制器
    • Statistic
      统计数值
    • Table
      表格
    • Tabs
      标签页
    • Tag
      标签
    • Timeline
      时间轴
    • Tooltip
      文字提示
    • Tour
      漫游式引导
      5.0.0
    • Tree
      树形控件
  • 反馈
    • Alert
      警告提示
    • Drawer
      抽屉
    • Message
      全局提示
    • Modal
      对话框
    • Notification
      通知提醒框
    • Popconfirm
      气泡确认框
    • Progress
      进度条
    • Result
      结果
    • Skeleton
      骨架屏
    • Spin
      加载中
    • Watermark
      水印
      5.1.0
  • 其他
    • Affix
      固钉
    • App
      包裹组件
      5.1.0
    • ConfigProvider
      全局化配置
    • Util
      工具类
      5.13.0

Transfer
穿梭框

双栏穿梭选择框。
使用import{ Transfer }from"antd";
源码components/transfer
文档编辑此页

相关资源

Ant Design Charts
Ant Design Pro
Ant Design Pro Components
Ant Design Mobile
Ant Design Mini
Ant Design Landing-首页模板集
Scaffolds-脚手架市场
Umi-React 应用开发框架
dumi-组件/文档研发工具
qiankun-微前端框架
ahooks-React Hooks 库
Ant Motion-设计动效
国内镜像站点 🇨🇳

社区

Awesome Ant Design
Medium
Twitter
yuque logoAnt Design 语雀专栏
Ant Design 知乎专栏
体验科技专栏
seeconf logoSEE Conf-蚂蚁体验科技大会
加入我们

帮助

GitHub
更新日志
常见问题
报告 Bug
议题
讨论区
StackOverflow
SegmentFault

Ant XTech logo更多产品

yuque logo语雀-构建你的数字花园
AntV logoAntV-数据可视化解决方案
Egg logoEgg-企业级 Node.js 框架
Kitchen logoKitchen-Sketch 工具集
Galacean logoGalacean-互动图形解决方案
xtech logo蚂蚁体验科技
主题编辑器
Made with ❤ by
蚂蚁集团和 Ant Design 开源社区
loading

何时使用

  • 需要在多个可选项中进行多选时。
  • 比起 Select 和 TreeSelect,穿梭框占据更大的空间,可以展示可选项的更多信息。

穿梭选择框用直观的方式在两栏中移动元素,完成选择行为。

选择一个或以上的选项后,点击对应的方向键,可以把选中的选项移动到另一栏。其中,左边一栏为 source,右边一栏为 target,API 的设计也反映了这两个概念。

注意:穿梭框组件只支持受控使用,不支持非受控模式。

代码演示

11 项Source
  • content1
  • content2
  • content3
  • content4
  • content5
  • content6
  • content7
  • content8
  • content9
  • content10
  • content11
9 项Target
  • content12
  • content13
  • content14
  • content15
  • content16
  • content17
  • content18
  • content19
  • content20
基本用法

最基本的用法,展示了 dataSource、targetKeys、每行的渲染函数 render 以及回调函数 onChange onSelectChange onScroll 的用法。

codepen icon
External Link Icon
expand codeexpand code
14 项Source
  • content1
  • content2
  • content4
  • content5
  • content7
  • content8
  • content10
  • content11
  • content13
  • content14
  • content16
  • content17
  • content19
  • content20
6 项Target
  • content3
  • content6
  • content9
  • content12
  • content15
  • content18
单向样式

通过 oneWay 将 Transfer 转为单向样式。

codepen icon
External Link Icon
expand codeexpand code
0 项
Simple Empty
暂无数据
0 项
Simple Empty
暂无数据
带搜索框

带搜索框的穿梭框,可以自定义搜索函数。

codepen icon
External Link Icon
expand codeexpand code
0 项
Simple Empty
暂无数据
0 项
Simple Empty
暂无数据
高级用法

穿梭框高级用法,可配置操作文案,可定制宽高,可对底部进行自定义渲染。

codepen icon
External Link Icon
expand codeexpand code
0 项
Simple Empty
暂无数据
0 项
Simple Empty
暂无数据
自定义渲染行数据

自定义渲染每一个 Transfer Item,可用于渲染复杂数据。

codepen icon
External Link Icon
expand codeexpand code
0 项
Simple Empty
暂无数据
0 项
Simple Empty
暂无数据

分页

大数据下使用分页。

codepen icon
External Link Icon
expand codeexpand code
20 项
NameTagDescription
content1CATdescription of content1
content2DOGdescription of content2
content3BIRDdescription of content3
content4CATdescription of content4
content5DOGdescription of content5
content6BIRDdescription of content6
content7CATdescription of content7
content8DOGdescription of content8
content9BIRDdescription of content9
content10CATdescription of content10
  • 1
  • 2
0 项
NameTagDescription
Simple Empty
暂无数据
表格穿梭框

使用 Table 组件作为自定义渲染列表。

codepen icon
External Link Icon
expand codeexpand code
7 项
0-0
0-1
0-1-0
0-1-1
0-2
0-3
0-4
0 项
Simple Empty
暂无数据
树穿梭框

使用 Tree 组件作为自定义渲染列表。

codepen icon
External Link Icon
expand codeexpand code
0 项
Simple Empty
暂无数据
0 项
Simple Empty
暂无数据
0 项
Simple Empty
暂无数据
0 项
Simple Empty
暂无数据
自定义状态

使用 status 为 Transfer 添加状态,可选 error 或者 warning。

codepen icon
External Link Icon
expand codeexpand code

API

通用属性参考:通用属性

Transfer

参数说明类型默认值版本
dataSource数据源,其中的数据将会被渲染到左边一栏中,targetKeys 中指定的除外RecordType extends TransferItem = TransferItem[][]
disabled是否禁用booleanfalse
selectionsIcon自定义下拉菜单图标React.ReactNode5.8.0
filterOption根据搜索内容进行筛选,接收 inputValue option direction 三个参数,(direction 自5.9.0+支持),当 option 符合筛选条件时,应返回 true,反之则返回 false(inputValue, option, direction: left | right): boolean-
footer底部渲染函数(props, { direction }) => ReactNode-direction: 4.17.0
listStyle两个穿梭框的自定义样式object|({direction: left | right}) => object-
locale各种语言{ itemUnit: string; itemsUnit: string; searchPlaceholder: string; notFoundContent: ReactNode | ReactNode[]; }{ itemUnit: 项, itemsUnit: 项, searchPlaceholder: 请输入搜索内容 }
oneWay展示为单向样式booleanfalse4.3.0
operations操作文案集合,顺序从上至下string[][>, <]
operationStyle操作栏的自定义样式CSSProperties-
pagination使用分页样式,自定义渲染列表下无效boolean | { pageSize: number, simple: boolean, showSizeChanger?: boolean, showLessItems?: boolean }false4.3.0
render每行数据渲染函数,该函数的入参为 dataSource 中的项,返回值为 ReactElement。或者返回一个普通对象,其中 label 字段为 ReactElement,value 字段为 title(record) => ReactNode-
selectAllLabels自定义顶部多选框标题的集合(ReactNode | (info: { selectedCount: number, totalCount: number }) => ReactNode)[]-
selectedKeys设置哪些项应该被选中string[] | number[][]
showSearch是否显示搜索框booleanfalse
showSelectAll是否展示全选勾选框booleantrue
status设置校验状态'error' | 'warning'-4.19.0
targetKeys显示在右侧框数据的 key 集合string[] | number[][]
titles标题集合,顺序从左至右ReactNode[]-
onChange选项在两栏之间转移时的回调函数(targetKeys, direction, moveKeys): void-
onScroll选项列表滚动时的回调函数(direction, event): void-
onSearch搜索框内容时改变时的回调函数(direction: left | right, value: string): void-
onSelectChange选中项发生改变时的回调函数(sourceSelectedKeys, targetSelectedKeys): void-

Render Props

Transfer 支持接收 children 自定义渲染列表,并返回以下参数:

参数说明类型版本
direction渲染列表的方向left | right
disabled是否禁用列表boolean
filteredItems过滤后的数据RecordType[]
selectedKeys选中的条目string[] | number[]
onItemSelect勾选条目(key: string | number, selected: boolean)
onItemSelectAll勾选一组条目(keys: string[] | number[], selected: boolean)

参考示例

<Transfer {...props}>{(listProps) => <YourComponent {...listProps} />}</Transfer>

注意

按照 React 的规范,所有的组件数组必须绑定 key。在 Transfer 中,dataSource 里的数据值需要指定 key 值。对于 dataSource 默认将每列数据的 key 属性作为唯一的标识。

如果你的数据没有这个属性,务必使用 rowKey 来指定数据列的主键。

// 比如你的数据主键是 uid
return <Transfer rowKey={(record) => record.uid} />;

主题变量(Design Token)

组件 Token如何定制?

Token 名称描述类型默认值
headerHeight顶部高度string | number40
itemHeight列表项高度string | number32
itemPaddingBlock列表项纵向内边距string | number5
listHeight列表高度string | number200
listWidth列表宽度string | number180
listWidthLG大号列表宽度string | number250

全局 Token如何定制?

FAQ

怎样让 Transfer 穿梭框列表支持异步数据加载

为了保持页码同步,在勾选时可以不移除选项而以禁用代替:https://codesandbox.io/s/objective-wing-6iqbx