Transfer 穿梭框

如果项目中使用的是 1.x 版本的基础组件(@alifd/next),请在左侧导航顶部切换组件版本。

安装方法

  1. 在命令行中执行以下命令npm install @icedesign/base@latest -S

开发指南

何时使用

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

API

穿梭框

参数说明类型默认值
prefix样式类名的品牌前缀String'next-'
className自定义类名String-
style自定义内联样式Object-
dataSource数据源Array<Object>[]
value(用于受控)当前值Array<String>-
defaultValue(用于非受控)初始值Array<String>[]
onChange值发生改变的时候触发的回调函数签名:Function(value: Array, data: Array, extra: Object) => void参数:value: {Array} 右面板值data: {Array} 右面板数据extra: {Object} 额外参数extra.leftValue: {Array} 左面板值extra.leftData: {Array} 左面板数据extra.movedValue: {Array} 发生移动的值extra.movedData: {Object} 发生移动的数据extra.direction: {String} 移动的方向,值为'left'或'right'Function-
showSearch是否显示搜索框Booleanfalse
searchPlaceholder搜索框占位符String'Search'
titles左右面板标题Array<ReactNode>[]
operations向右向左移动按钮显示内容Array<ReactNode><
defaultLeftChecked左面板默认选中值Array<String>[]
defaultRightChecked右面板默认选中值Array<String>[]
listStyle左右面板列表自定义样式Object-
locale自定义国际化文案对象Object-
language自定义国际化语言可选值:'zh-cn', 'en-us', 'zh-tw'Enum-

代码示例

基本

最简单的用法。

Transfer 穿梭框 - 图1

查看源码在线预览

  1. import { Transfer } from "@icedesign/base";
  2. const dataSource = (() => {
  3. const dataSource = [];
  4. for (let i = 0; i < 10; i++) {
  5. dataSource.push({
  6. label: `content${i}`,
  7. value: `${i}`,
  8. disabled: i % 4 === 0
  9. });
  10. }
  11. return dataSource;
  12. })();
  13. class Demo extends React.Component {
  14. constructor(props) {
  15. super(props);
  16. this.handleChange = this.handleChange.bind(this);
  17. }
  18. handleChange(value, data, extra) {
  19. console.log(value, data, extra);
  20. }
  21. render() {
  22. return (
  23. <Transfer
  24. defaultValue={["3"]}
  25. dataSource={dataSource}
  26. defaultLeftChecked={["1"]}
  27. onChange={this.handleChange}
  28. />
  29. );
  30. }
  31. }
  32. ReactDOM.render(<Demo />, mountNode);

受控

展示受控的用法。

Transfer 穿梭框 - 图2

查看源码在线预览

  1. import { Transfer } from "@icedesign/base";
  2. const dataSource = (() => {
  3. const dataSource = [];
  4. for (let i = 0; i < 10; i++) {
  5. dataSource.push({
  6. label: `content${i}`,
  7. value: `${i}`,
  8. disabled: i % 4 === 0
  9. });
  10. }
  11. return dataSource;
  12. })();
  13. class Demo extends React.Component {
  14. constructor(props) {
  15. super(props);
  16. this.state = {
  17. value: ["3"]
  18. };
  19. this.handleChange = this.handleChange.bind(this);
  20. }
  21. handleChange(value, data, extra) {
  22. console.log(value, data, extra);
  23. this.setState({
  24. value
  25. });
  26. }
  27. render() {
  28. return (
  29. <Transfer
  30. value={this.state.value}
  31. dataSource={dataSource}
  32. defaultLeftChecked={["1"]}
  33. onChange={this.handleChange}
  34. />
  35. );
  36. }
  37. }
  38. ReactDOM.render(<Demo />, mountNode);

自定义

展示自定义样式的用法。

Transfer 穿梭框 - 图3

查看源码在线预览

  1. import { Transfer } from "@icedesign/base";
  2. const dataSource = (() => {
  3. const dataSource = [];
  4. for (let i = 0; i < 10; i++) {
  5. dataSource.push({
  6. label:
  7. i % 3 === 0
  8. ? `content${i}contentcontentcontentcontentcontent`
  9. : `content${i}`,
  10. value: `${i}`,
  11. disabled: i % 4 === 0
  12. });
  13. }
  14. return dataSource;
  15. })();
  16. class Demo extends React.Component {
  17. constructor(props) {
  18. super(props);
  19. this.handleChange = this.handleChange.bind(this);
  20. }
  21. handleChange(value, data, extra) {
  22. console.log(value, data, extra);
  23. }
  24. render() {
  25. return (
  26. <Transfer
  27. defaultValue={["3"]}
  28. dataSource={dataSource}
  29. listStyle={{ width: "200px", height: "192px" }}
  30. defaultLeftChecked={["1"]}
  31. onChange={this.handleChange}
  32. language="en-us"
  33. titles={["Source", "Target"]}
  34. operations={[">>", "<<"]}
  35. />
  36. );
  37. }
  38. }
  39. ReactDOM.render(<Demo />, mountNode);

搜索

展示搜索的用法。

Transfer 穿梭框 - 图4

查看源码在线预览

  1. import { Transfer } from "@icedesign/base";
  2. const dataSource = (() => {
  3. const dataSource = [];
  4. for (let i = 0; i < 10; i++) {
  5. dataSource.push({
  6. label: `content${i}`,
  7. value: `${i}`,
  8. disabled: i % 4 === 0
  9. });
  10. }
  11. return dataSource;
  12. })();
  13. class Demo extends React.Component {
  14. constructor(props) {
  15. super(props);
  16. this.handleChange = this.handleChange.bind(this);
  17. }
  18. handleChange(value, data, extra) {
  19. console.log(value, data, extra);
  20. }
  21. render() {
  22. return (
  23. <Transfer
  24. showSearch
  25. defaultValue={["3"]}
  26. dataSource={dataSource}
  27. defaultLeftChecked={["1"]}
  28. onChange={this.handleChange}
  29. />
  30. );
  31. }
  32. }
  33. ReactDOM.render(<Demo />, mountNode);

相关区块

Transfer 穿梭框 - 图5

暂无相关区块