关于react中使用拖拽插件的评测

3,583 阅读3分钟

我们的做需求的时候有时会遇到拖拽,比如我在做企洞察2.0的时候就遇到了这样的需求,需要对下面这种从左往右换行的的数据进行自由拖拽,

并且在拖拽的过程中可以有动画缓动,

react-sortable

最开始我们使用了react-sortable

安装方式 npm i react-sortable --save

它的使用方式很简单,www.npmjs.com/package/rea…

基本上10分钟就撸出来,但缺点也很明显,

1.他的拖拽方式是固定的,就是从拖拽开始,碰到谁就和谁互换位置,但是如果我不想要这样的拖拽,我想最后松开鼠标的时候判断,骚瑞,不可以

2.只支持列表内拖拽,跨容器拖拽不可以

上手指数:★★★★★

可扩展性:★

当然如果你的拖拽方式恰好与他给的一样,那就没问题啦。而我们的需求与之相悖

1.我们要求在的不是互换元素,而是插入。

2我们需要在鼠标拖拽过程中有缓动的效果,最好插件可以提供,而不是我们自己写

react-beautiful-dnd

有一个beautifu作为点缀,缓动自然是满足的,事实上这个插件确实自带列表元素缓动,但是你去看一下api会发现,虽然它的动效很华丽,但是只支持纯竖向或

纯横向,带换行的这种不行,我自己试着用了换行后,发现缓动特效非常诡异。但是除了特效不支持,对于拖拽形式的选择还是很自由的,使用方式也相对固定

上手指数:★★★★

可扩展性:★★★(特效不能随意扩展)

react-dnd

react-beautiful-dnd 其实就是基于 react-dnd进行的扩展,dnd开放的扩展接口很多,你基本可以实现所有拖拽,但代价就是上手会有些时间(它支持装饰器以及hook两种使用方式,我觉得就装饰器挺好的,学一个够用就行),不过dnd插件是使用者比较多,

我认识的大佬都是用dnd,(antd也用的dnd实现table拖拽)另外dnd没有缓动支持,如果你要做缓动,请自己加。

其实自己加问题也不大,我们可以把所有item都使用absolute布局,手动设置top left , 同花顺软件的表头广场就是这样的思路,确定好item的宽高+transition,现实起来还好

上手指数:★★★

可扩展性:★★★★★

react-sortable-hoc

antd里也有用到该插件,它是我目前用的这几个里面感觉最好的,上手难度不高,扩展性还好,而且还自带缓动,不过对于我们的这个需求,用grid布局效果是很好的,但是用flex+warp效果就不大行,建议大家直接用该插件,可应对90%需求。如果要更多的自由,就用dnd。

上手指数:★★★★

可扩展性:★★★★☆(4.5星)