logoAnt Design

⌘ K
  • Design
  • Development
  • Components
  • Blog
  • Resources
6.0.0-alpha.3
  • Components Overview
  • Changelog
    v6.0.0-alpha.3
  • General
    • Button
    • FloatButton
      5.0.0
    • Icon
    • Typography
  • Layout
    • Divider
    • Flex
      5.10.0
    • Grid
    • Layout
    • Masonry
      6.0.0
    • Space
    • Splitter
      5.21.0
  • Navigation
    • Anchor
    • Breadcrumb
    • Dropdown
    • Menu
    • Pagination
    • Steps
    • Tabs
  • Data Entry
    • AutoComplete
    • Cascader
    • Checkbox
    • ColorPicker
      5.5.0
    • DatePicker
    • Form
    • Input
    • InputNumber
    • Mentions
    • Radio
    • Rate
    • Select
    • Slider
    • Switch
    • TimePicker
    • Transfer
    • TreeSelect
    • Upload
  • Data Display
    • Avatar
    • Badge
    • Calendar
    • Card
    • Carousel
    • Collapse
    • Descriptions
    • Empty
    • Image
    • List
      DEPRECATED
    • Popover
    • QRCode
      5.1.0
    • Segmented
    • Statistic
    • Table
    • Tag
    • Timeline
    • Tooltip
    • Tour
      5.0.0
    • Tree
  • Feedback
    • Alert
    • Drawer
    • Message
    • Modal
    • Notification
    • Popconfirm
    • Progress
    • Result
    • Skeleton
    • Spin
    • Watermark
      5.1.0
  • Other
    • Affix
    • App
      5.1.0
    • ConfigProvider
    • Util
When To Use
Examples
Basic
One Way
Search
Advanced
Custom datasource
Custom Actions
Pagination
Table Transfer
Tree Transfer
Status
Custom semantic dom styling
API
Render Props
Warning
Semantic DOM
Design Token
FAQ
How to support fetch and present data from a remote server in Transfer column.

Transfer

Double column transfer choice box.
Importimport { Transfer } from "antd";
GitHub
components/transferIssueOpen issues
Docs
Edit this page
contributors
TimePickerTreeSelect

Resources

Ant Design X
Ant Design Charts
Ant Design Pro
Pro Components
Ant Design Mobile
Ant Design Mini
Ant Design Web3
Ant Design Landing-Landing Templates
Scaffolds-Scaffold Market
Umi-React Application Framework
dumi-Component doc generator
qiankun-Micro-Frontends Framework
Ant Motion-Motion Solution
China Mirror 🇨🇳

Community

Awesome Ant Design
Medium
X
yuque logoAnt Design in YuQue
Ant Design in Zhihu
Experience Cloud Blog
seeconf logoSEE Conf-Experience Tech Conference

Help

GitHub
Change Log
FAQ
Bug Report
Issues
Discussions
StackOverflow
SegmentFault

Ant XTech logoMore Products

yuque logoYuQue-Document Collaboration Platform
AntV logoAntV-Data Visualization
Egg logoEgg-Enterprise Node.js Framework
Kitchen logoKitchen-Sketch Toolkit
Galacean logoGalacean-Interactive Graphics Solution
WeaveFox logoWeaveFox-AI Development with WeaveFox 🦊
xtech logoAnt Financial Experience Tech
Theme Editor
Made with ❤ by
Ant Group and Ant Design Community
loading

When To Use

  • It is a select control essentially which can be use for selecting multiple items.
  • Transfer can display more information for items and take up more space.

Transfer the elements between two columns in an intuitive and efficient way.

One or more elements can be selected from either column, one click on the proper direction button, and the transfer is done. The left column is considered the source and the right column is considered the target. As you can see in the API description, these names are reflected in.

notice: Transfer is a controlled component, uncontrolled mode is not supported.

Examples

API

Common props ref:Common props

PropertyDescriptionTypeDefaultVersion
actionsA set of operations that are sorted from top to bottom. When an array of strings is provided, default buttons will be used; when an array of ReactNode is provided, custom elements will be usedReactNode[][>, <]6.0.0
classNamesCustomize class for each semantic structure inside the component. Supports object or function.Record<SemanticDOM, string> | (info: { props })=> Record<SemanticDOM, string>-
dataSourceUsed for setting the source data. The elements that are part of this array will be present the left column. Except the elements whose keys are included in targetKeys propRecordType extends TransferItem = TransferItem[][]
disabledWhether disabled transferbooleanfalse
selectionsIconcustom dropdown iconReact.ReactNode5.8.0
filterOptionA function to determine whether an item should show in search result list, only works when searching, (add direction support since 5.9.0+)(inputValue, option, direction: left | right): boolean-
footerA function used for rendering the footer(props, { direction }) => ReactNode-direction: 4.17.0
listStyleA custom CSS style used for rendering the transfer columns. Use styles.section insteadobject | ({direction: left | right}) => object-
localeThe i18n text including filter, empty text, item unit, etc{ itemUnit: string; itemsUnit: string; searchPlaceholder: string; notFoundContent: ReactNode | ReactNode[]; }{ itemUnit: item, itemsUnit: items, notFoundContent: The list is empty, searchPlaceholder: Search here }
oneWayDisplay as single direction stylebooleanfalse4.3.0
operationsA set of operations that are sorted from top to bottom. Use actions instead.string[][>, <]
operationStyleA custom CSS style used for rendering the operations column. Use styles.actions instead.object-
paginationUse pagination. Not work in render propsboolean | { pageSize: number, simple: boolean, showSizeChanger?: boolean, showLessItems?: boolean }false4.3.0
renderThe function to generate the item shown on a column. Based on an record (element of the dataSource array), this function should return a React element which is generated from that record. Also, it can return a plain object with value and label, label is a React element and value is for title(record) => ReactNode-
selectAllLabelsA set of customized labels for select all checkboxes on the header(ReactNode | (info: { selectedCount: number, totalCount: number }) => ReactNode)[]-
selectedKeysA set of keys of selected itemsstring[] | number[][]
showSearchIf included, a search box is shown on each columnboolean | { placeholder:string,defaultValue:string }false
showSelectAllShow select all checkbox on the headerbooleantrue
statusSet validation status'error' | 'warning'-4.19.0
stylesCustomize inline style for each semantic structure inside the component. Supports object or function.Record<SemanticDOM, CSSProperties> | (info: { props })=> Record<SemanticDOM, CSSProperties>-
targetKeysA set of keys of elements that are listed on the right columnstring[] | number[][]
titlesA set of titles that are sorted from left to rightReactNode[]-
onChangeA callback function that is executed when the transfer between columns is complete(targetKeys, direction, moveKeys): void-
onScrollA callback function which is executed when scroll options list(direction, event): void-
onSearchA callback function which is executed when search field are changed(direction: left | right, value: string): void-
onSelectChangeA callback function which is executed when selected items are changed(sourceSelectedKeys, targetSelectedKeys): void-

Render Props

Transfer accept children to customize render list, using follow props:

PropertyDescriptionTypeVersion
directionList render directionleft | right
disabledDisable list or notboolean
filteredItemsFiltered itemsRecordType[]
selectedKeysSelected itemsstring[] | number[]
onItemSelectSelect item(key: string | number, selected: boolean)
onItemSelectAllSelect a group of items(keys: string[] | number[], selected: boolean)

example

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

Warning

According the standard of React, the key should always be supplied directly to the elements in the array. In Transfer, the keys should be set on the elements included in dataSource array. By default, key property is used as an unique identifier.

If there's no key in your data, you should use rowKey to specify the key that will be used for uniquely identify each element.

jsx
// eg. your primary key is `uid`
return <Transfer rowKey={(record) => record.uid} />;

Semantic DOM

Design Token

Component TokenHow to use?
Token NameDescriptionTypeDefault Value
headerHeightHeight of headerstring | number40
itemHeightHeight of list itemstring | number32
itemPaddingBlockVertical padding of list itemstring | number5
listHeightHeight of liststring | number200
listWidthWidth of liststring | number180
listWidthLGWidth of large liststring | number250
Global TokenHow to use?

FAQ

How to support fetch and present data from a remote server in Transfer column.

In order to keep the page number synchronized, you can disable columns you checked without removing the option: https://codesandbox.io/s/objective-wing-6iqbx

Basic

The most basic usage of Transfer involves providing the source data and target keys arrays, plus the rendering and some callback functions.

CodeSandbox Icon
Hitu Icon
codepen icon
External Link Icon
Expand Icon
One Way

Use oneWay to make Transfer the one way style.

CodeSandbox Icon
Hitu Icon
codepen icon
External Link Icon
Expand Icon
Search

Transfer with a search box.

CodeSandbox Icon
Hitu Icon
codepen icon
External Link Icon
Expand Icon
Advanced

Advanced Usage of Transfer.

You can customize the labels of the transfer buttons, the width and height of the columns, and what should be displayed in the footer.

CodeSandbox Icon
Hitu Icon
codepen icon
External Link Icon
Expand Icon
Custom datasource

Customize each Transfer Item, allowing you to render a complex datasource.

CodeSandbox Icon
Hitu Icon
codepen icon
External Link Icon
Expand Icon
Custom Actions

You can customize operations with the actions prop. This example demonstrates how to customize actions, including handling disabled and loading states.

When actions is an array of strings, it will use the default Button component and set the strings as button text.

When actions is an array of React elements, it will use these elements directly as action buttons, allowing you to use custom button components, such as buttons with loading state in this example.

Note:

  1. When using custom buttons, the Transfer component will automatically handle the button's disabled state and click events.
  2. You can add a disabled property to your custom button to control its disabled state.
  3. You can add an onClick event handler to your custom button, which will be merged with the Transfer component's internal handler.
CodeSandbox Icon
Hitu Icon
codepen icon
External Link Icon
Expand Icon
6.0.0
Pagination

Store a large amount of items with pagination.

CodeSandbox Icon
Hitu Icon
codepen icon
External Link Icon
Expand Icon
Table Transfer

Customize the render list with a Table component.

CodeSandbox Icon
Hitu Icon
codepen icon
External Link Icon
Expand Icon
Tree Transfer

Customize the render list with a Tree component.

CodeSandbox Icon
Hitu Icon
codepen icon
External Link Icon
Expand Icon
Status

Add status to Transfer with status, which could be error or warning.

CodeSandbox Icon
Hitu Icon
codepen icon
External Link Icon
Expand Icon
Custom semantic dom styling

You can customize the semantic dom style of Transfers by passing objects/functions through classNames and styles.

CodeSandbox Icon
Hitu Icon
codepen icon
External Link Icon
Expand Icon
6.0.0
11 itemsSource
  • content1
  • content2
  • content3
  • content4
  • content5
  • content6
  • content7
  • content8
  • content9
  • content10
  • content11
9 itemsTarget
  • content12
  • content13
  • content14
  • content15
  • content16
  • content17
  • content18
  • content19
  • content20
14 itemsSource
  • content1
  • content2
  • content4
  • content5
  • content7
  • content8
  • content10
  • content11
  • content13
  • content14
  • content16
  • content17
  • content19
  • content20
6 itemsTarget
  • content3
  • content6
  • content9
  • content12
  • content15
  • content18
0 item
No data
No data
0 item
No data
No data
0 item
No data
No data
0 item
No data
No data
0 item
No data
No data
0 item
No data
No data
11 items
  • Content 1
  • Content 2
  • Content 3
  • Content 4
  • Content 5
  • Content 6
  • Content 7
  • Content 8
  • Content 9
  • Content 10
  • Content 11
9 items
  • Content 12
  • Content 13
  • Content 14
  • Content 15
  • Content 16
  • Content 17
  • Content 18
  • Content 19
  • Content 20
0 item
No data
No data
0 item
No data
No data

20 items
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 item
NameTagDescription
No data
No data
7 items
0-0
0-1
0-1-0
0-1-1
0-2
0-3
0-4
0 item
No data
No data
0 item
No data
No data
0 item
No data
No data
0 item
No data
No data
0 item
No data
No data
11 items
  • content1
  • content2
  • content3
  • content4
  • content5
  • content6
  • content7
  • content8
  • content9
  • content10
  • content11
9 items
  • content12
  • content13
  • content14
  • content15
  • content16
  • content17
  • content18
  • content19
  • content20
11 items
  • content1
  • content2
  • content3
  • content4
  • content5
  • content6
  • content7
  • content8
  • content9
  • content10
  • content11
9 items
  • content12
  • content13
  • content14
  • content15
  • content16
  • content17
  • content18
  • content19
  • content20
18 itemsSource
  • content 1
  • content 2
  • content 3
  • content 5
  • content 6
  • content 7
  • content 8
  • content 9
  • content 11
  • content 12
  • content 13
  • content 14
  • content 15
  • content 16
  • content 17
  • content 18
  • content 19
  • content 20
Custom Footer
2 itemsTarget
  • content 4
  • content 10
Custom Footer
  • root
    Root element with flex layout, transfer container base styles and layout control
  • section
    Section element with flex layout, width, height, min height, border, border radius and other single-side transfer container styles
  • header
    Header element with flex layout, alignment, height, padding, color, background color, bottom border, border radius and other header area styles
  • title
    Title element with text ellipsis, flex ratio, text alignment, auto left margin and other title text layout and styles
  • body
    Body element with list main area container styles and layout control
  • list
    List element with list content styles, layout and scroll control
  • item
    List item element with relative positioning, padding, border, hover state, selected state, disabled state and other list item interaction styles
  • itemIcon
    List item icon element with checkbox and other icon styles and interaction states
  • itemContent
    List item content element with text ellipsis, padding and other list item text content display styles
  • footer
    Footer element with bottom operation area styles and layout
  • actions
    Actions element with transfer button group styles, layout and interaction states