基于react的拖拽组件库react-beautiful-dnd 一个简单的垂直列表

// 用的时候先安装react-beautiful-dnd
在这里插入图片描述

import React, {Component} from "react";
import {DragDropContext, Droppable, Draggable} from "react-beautiful-dnd";

// 生成一个数组
const getItems = (count:any) =>
  Array.from({length: count}, (v, k) => k).map(k => ({
    id: `item-${k}`,
    content: `item ${k}`
  }));

// 这个方法是专门更改拖拽之后换位子的
const reorder = (list:any, startIndex:any, endIndex:any) => {
  const result = Array.from(list);
  console.log(result,'11111111111111')
  const [removed] = result.splice(startIndex, 1);
  result.splice(endIndex, 0, removed);
  return result;
};


class Index extends Component {
  constructor(props:any) {
    super(props);
    this.state = {
      items: getItems(5)
    };
    this.onDragEnd = this.onDragEnd.bind(this);
  }

  onDragEnd(result:any) {
    console.log(result)
    if (!result.destination) {
      return;
    }
    const items = reorder(
      this.state.items,
      result.source.index,
      result.destination.index
    );

    this.setState({
      items
    });
  }

  render() {
    return (
      <DragDropContext onDragEnd={this.onDragEnd}>
        <Droppable droppableId="droppable">
          {(provided:any, snapshot:any) => (
            <div
              {...provided.droppableProps}
              ref={provided.innerRef}
            >
              {this.state.items.map((item:any, index:any) => (
                <Draggable key={item.id} draggableId={item.id} index={index}>
                  {(provided:any, snapshot:any) => (
                    <div
                      ref={provided.innerRef}
                      {...provided.draggableProps}
                      {...provided.dragHandleProps}
                    >
                      {item.content}1111
                    </div>
                  )}
                </Draggable>
              ))}

            </div>
          )}
        </Droppable>
      </DragDropContext>
    );
  }
}

export default Index;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱技术的大仙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值