logoNamu Design

⌘ K
  • 设计
  • 研发
  • 组件
  • 博客
  • 资源
  • 国内镜像
1.0.0
  • 组件总览
  • 通用
    • Button按钮
    • FloatButton悬浮按钮New
    • Icon图标
    • Typography排版
  • 布局
    • Divider分割线
    • Grid栅格
    • Layout布局
    • Space间距
  • 导航
    • Anchor锚点
    • Breadcrumb面包屑
    • Dropdown下拉菜单
    • Menu导航菜单
    • Pagination分页
    • Steps步骤条
  • 数据录入
    • AutoComplete自动完成
    • Cascader级联选择
    • Checkbox多选框
    • ColorPicker颜色选择器New
    • 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二维码New
    • Segmented分段控制器
    • Statistic统计数值
    • Table表格
    • Tabs标签页
    • Tag标签
    • Timeline时间轴
    • Tooltip文字提示
    • Tour漫游式引导New
    • Tree树形控件
  • 反馈
    • Alert警告提示
    • Drawer抽屉
    • Message全局提示
    • Modal对话框
    • Notification通知提醒框
    • Popconfirm气泡确认框
    • Progress进度条
    • Result结果
    • Skeleton骨架屏
    • Spin加载中
    • Watermark水印New
  • 其他
    • Affix固钉
    • App包裹组件New
    • ConfigProvider全局化配置
何时使用
代码演示
基本用法
单向样式
带搜索框
高级用法
自定义渲染行数据
分页
表格穿梭框
树穿梭框
自定义状态
API
Transfer
Render Props
注意
Design Token
FAQ
怎样让 Transfer 穿梭框列表支持异步数据加载

Transfer
穿梭框

  • TimePicker时间选择框TreeSelect树选择

    相关资源

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

    社区

    Awesome Namu Design
    Medium
    Twitter
    yuqueNamu Design 语雀专栏
    Namu Design 知乎专栏
    体验科技专栏
    seeconfSEE Conf-蚂蚁体验科技大会
    加入我们

    帮助

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

    Ant XTech更多产品

    yuque语雀-构建你的数字花园
    AntVAntV-数据可视化解决方案
    EggEgg-企业级 Node.js 框架
    kitchenKitchen-Sketch 工具集
    xtech蚂蚁体验科技
    主题编辑器
    Made with ❤ by
    蚂蚁集团和 Namu Design 开源社区

    双栏穿梭选择框。

    何时使用

    • 需要在多个可选项中进行多选时。
    • 比起 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 的用法。

    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 转为单向样式。

    expand codeexpand code
    0 项
    暂无数据
    0 项
    暂无数据
    带搜索框

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

    expand codeexpand code
    0 项
    暂无数据
    0 项
    暂无数据
    高级用法

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

    expand codeexpand code
    0 项
    暂无数据
    0 项
    暂无数据
    自定义渲染行数据

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

    expand codeexpand code
    0 项
    暂无数据
    0 项
    暂无数据

    分页

    大数据下使用分页。

    expand codeexpand code
    14 项
    NameTagDescription
    content1catdescription of content1
    content2dogdescription of content2
    content4catdescription of content4
    content5dogdescription of content5
    content7catdescription of content7
    content8dogdescription of content8
    content10catdescription of content10
    content11dogdescription of content11
    content13catdescription of content13
    content14dogdescription of content14
    • 1
    • 2
    6 项
    Name
    content3
    content6
    content9
    content12
    content15
    content18
    • 1
    表格穿梭框

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

    expand codeexpand code
    7 项
    0-0
    0-1
    0-1-0
    0-1-1
    0-2
    0-3
    0-4
    0 项
    暂无数据
    树穿梭框

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

    expand codeexpand code
    0 项
    暂无数据
    0 项
    暂无数据
    0 项
    暂无数据
    0 项
    暂无数据
    自定义状态

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

    expand codeexpand code

    API

    通用属性参考:通用属性

    Transfer

    参数说明类型默认值版本
    dataSource数据源,其中的数据将会被渲染到左边一栏中,targetKeys 中指定的除外RecordType extends TransferItem = TransferItem[][]
    disabled是否禁用booleanfalse
    selectionsIcon自定义下拉菜单图标React.ReactNode5.8.0
    filterOption根据搜索内容进行筛选,接收 inputValue option 两个参数,当 option 符合筛选条件时,应返回 true,反之则返回 false(inputValue, option): 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[][]
    showSearch是否显示搜索框booleanfalse
    showSelectAll是否展示全选勾选框booleantrue
    status设置校验状态'error' | 'warning'-4.19.0
    targetKeys显示在右侧框数据的 key 集合string[][]
    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[]
    onItemSelect勾选条目(key: string, selected: boolean)
    onItemSelectAll勾选一组条目(keys: string[], 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

    FAQ

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

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