C

Transfer 穿梭框

双栏穿梭框

双栏穿梭框,支持在源列表和目标列表之间移动项目,含搜索和全选功能。

何时使用

需要在两个列表之间选择和移动项目时使用,如权限分配、角色选择。

代码示例

基础用法

tsx
import { Transfer } from "@chaos_team/chaos-ui/ui"
import { useState } from "react"

const dataSource = [
{ key: "1", label: "Option 1" },
{ key: "2", label: "Option 2" },
{ key: "3", label: "Option 3" },
{ key: "4", label: "Option 4" },
]

export function Basic() {
const [targetKeys, setTargetKeys] = useState<string[]>([])
return (
  <Transfer
    dataSource={dataSource}
    targetKeys={targetKeys}
    onChange={setTargetKeys}
  />
)
}

单向模式

tsx
import { Transfer } from "@chaos_team/chaos-ui/ui"

export function OneWay() {
return (
  <Transfer
    dataSource={[{ key: "1", label: "Item 1" }, { key: "2", label: "Item 2" }]}
    oneWay
  />
)
}

API / Props

Transfer

PropTypeDefault说明
dataSourceTransferItem[]Data source / 数据源 (required)
targetKeysstring[][]Keys in target panel / 目标面板的 key
onChange(targetKeys: string[]) => voidChange callback / 变化回调
titles[string, string]Panel titles / 面板标题
searchablebooleantrueEnable search / 启用搜索
oneWaybooleanfalseOne-way mode / 单向模式
disabledbooleanfalseDisable all / 全部禁用
render(item: TransferItem) => React.ReactNodeCustom item render / 自定义渲染

TransferItem

PropType说明
keystringUnique key / 唯一键 (required)
labelstringDisplay label / 显示标签 (required)
descriptionstringDescription / 描述
disabledbooleanDisabled / 禁用

注意事项

  • Client Component: 使用 "use client",依赖 React hooks/状态,需在客户端渲染。
  • i18n: 内置 react-i18next 支持,翻译命名空间为 transfer

📘 完整交互式示例与控件属性请查看 Storybook 文档