如何在实质性UI中将TableItem从一个组件拖放到另一个组件?

时间:2019-03-19 12:03:06

标签: javascript reactjs material-ui react-dnd

问题是我必须将ListItem从一个List组件拖动到另一个。我不知道如何在Material UI中实现它。

1 个答案:

答案 0 :(得分:-1)

Material UI Drag and Drop模块为您提供了一种轻松且声明式地创建拖放界面的方法,并支持自由拖动,列表内排序,在列表,动画,触摸设备,自定义拖动手柄之间传输项目,预览和占位符,以及水平列表和沿轴锁定。

这是一个非常简单的示例,其中包含两个List组件。我建议您在此example link中玩转。

HTML

<div class="example-container">
  <h2>To do</h2>

  <div
    cdkDropList
    #todoList="cdkDropList"
    [cdkDropListData]="todo"
    [cdkDropListConnectedTo]="[doneList]"
    class="example-list"
    (cdkDropListDropped)="drop($event)">
    <div class="example-box" *ngFor="let item of todo" cdkDrag>{{item}}</div>
  </div>
</div>

<div class="example-container">
  <h2>Done</h2>

  <div
    cdkDropList
    #doneList="cdkDropList"
    [cdkDropListData]="done"
    [cdkDropListConnectedTo]="[todoList]"
    class="example-list"
    (cdkDropListDropped)="drop($event)">
    <div class="example-box" *ngFor="let item of done" cdkDrag>{{item}}</div>
  </div>
</div>

TS

todo = [
    'Get to work',
    'Pick up groceries',
    'Go home',
    'Fall asleep'
  ];

  done = [
    'Get up',
    'Brush teeth',
    'Take a shower',
    'Check e-mail',
    'Walk dog'
  ];

  drop(event: CdkDragDrop<string[]>) {
    if (event.previousContainer === event.container) {
      moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
    } else {
      transferArrayItem(event.previousContainer.data,
                        event.container.data,
                        event.previousIndex,
                        event.currentIndex);
    }
  }