react-beautiful-dnd垂直案例标签

缘由: 项目比较古老,ant使用的是4,tag不支持托拽。

使用  react-beautiful-dnd 插件进行开发。

官方地址:GitHub - atlassian/react-beautiful-dnd: Beautiful and accessible drag and drop for lists with React

官方案例:Storybook

其他参考: demo文档  最开始找到这个,后面发现不是官方地址。。 

import React, { useEffect, useState } from 'react';
import { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';
import { Space } from 'antd';
import CheckableTag from 'antd/es/tag/CheckableTag';

const getItemKey = (itemName) => {
  switch (itemName) {
    case '包':
      return 'clue_pkg_id';
    case '租户':
      return 'tenant_id';
    case '通道':
      return 'channel_id';
    default:
      return itemName;
  }
};

/**
 * @function 生成初始数组
 * @returns {array}
 * @param items
 * */
const createItems = (items) =>
  items.map((item, index) => ({
    id: `${item}`,
    content: item,
  }));

/**
 * @function 生成排序后的数组
 * @param {array} list 排序前数组
 * @param {number} startIndex 元素在被拖动前所在索引
 * @param {number} endIndex 元素在被拖动后位置所在索引
 * @return {array} result 排序后数组
 * */
const reorder = (list, startIndex, endIndex) => {
  console.log('reorder:', list, startIndex, endIndex);
  const result = Array.from(list); // 深拷贝数组
  if (Math.abs(startIndex - endIndex) > 1) {
    if (startIndex < endIndex) {
      // 将 startIndex 到 endIndex-1 的元素向前移动一位
      for (let i = startIndex; i < endIndex; i++) {
        result[i] = list[i + 1];
      }
      // 将 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

林发和

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

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

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

打赏作者

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

抵扣说明:

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

余额充值