mezhanglei / react-dragger-sort

easy to drag and drop sort(好用的拖拽排序组件)
3 stars 0 forks source link

拖拽问题 #1

Closed sawokd closed 1 year ago

sawokd commented 1 year ago

请问从左边表拖动到右边表 鼠标没松的时候 左边表可以不动态显示他放的位置吗? 我设置了disabledSort:true,回调参数to里面的index为-1

sawokd commented 1 year ago

设置了disabledSort:true,to就是中的index就是-1 image

mezhanglei commented 1 year ago

请问从左表拖动到右表 老鼠标没有松的时候 左表可以不动态显示他放的位置吗?我设置了disabledSort:true,返回参数里面的index为-1 你好,设置disabledSort: true,会禁止拖放的时候产生交换动画,不会影响你的右边表的onUpdate和onAdd回调,这个我用了挺复杂的场景,没有发现有这种问题,我自己做设计器也用了disabledSort: true. 你可以把你的两个表,怎么用的截图出来,然后指出哪个回调出了问题我试图看看

sawokd commented 1 year ago

我现在就是启的你的demo

import React, { useState } from 'react';
import "./index.less";
import DndSortable, { DndProps } from "../../src/index";

const Home: React.FC<any> = (props) => {
  const [part1, setPart1] = useState([1, 2, 3, 4, 5])
  const [part2, setPart2] = useState([6, 7, 8, 9, 10])

  const onStart: DndProps['onStart'] = (params) => {
    const { from } = params;
    const formIndex = from?.index
    console.log(formIndex, 'onStart');
  }

  const onEnd: DndProps['onEnd'] = (params) => {
    const { e, from, to } = params;
    console.log(to, 'onEnd');
  }

  return (
    <div>
      <p>part1</p>
      <DndSortable
        onStart={onStart}
        onEnd={onEnd}
        collection={{ group: 'part1' }} // custome props
        style={{ display: 'flex', flexWrap: 'wrap', background: 'blue', width: '200px', marginTop: '10px' }}
        options={{
          hiddenFrom: false,
        }}>
        {
          part1?.map((item, index) => (<div style={{ width: '50px', height: '50px', backgroundColor: 'red', border: '1px solid green' }} key={index}>{item}</div>))
        }
      </DndSortable>
      <p>part2</p>
      <DndSortable
        onStart={onStart}
        onEnd={onEnd}
        collection={{ group: 'part2' }}  // custome props
        style={{ display: 'flex', flexWrap: 'wrap', background: 'gray', width: '200px', marginTop: '10px' }}
        options={{
          hiddenFrom: true,
          disabledSort: true,
        }}>
        {
          part2?.map((item, index) => (<div style={{ width: '50px', height: '50px', backgroundColor: 'red', border: '1px solid green' }} key={index}>{item}</div>))
        }
      </DndSortable>
    </div>
  );
};

export default Home;

我将part2设置disabledSort: true,从part1拖过去 to是-1

sawokd commented 1 year ago

我现在的使用场景就是说 a可以拖到b去,b不能拖到a去,a拖到b去时鼠标没松的过程中不想在b出现a拖过去的内容

sawokd commented 1 year ago

应该是 暂时不支持这个场景把?哈哈...

mezhanglei commented 1 year ago

应该是 暂时不支持这个场景把?哈哈...

代码比较久远,刚刚去回忆了一下,没错,按照现在代码来看,index必须要有插入动作才能得到。但是最初设计是也支持这种场景的,因为后续还有升级计划所以暂时搁置了,目前还是有一些小问题的比如ref传递。暂时使用可以避免在需要index的地方使用disabledSort: true. 此库对标sortablejs,如果升级成功,体积和灵活度会更好一些

mezhanglei commented 1 year ago

目前已修复问题