angular因为是双向数据流,处理拖拽后的数据变化比较方便,用过原生的html5拖放(drag和drop)、angular的cdk drag-drop以及第三方dragula库。
由于项目技术栈从angular重构为react,基于ng2-dragula的多容器(容器之间会有嵌套)拖拽方案照搬过来以后出现了不少问题,比如拖拽后dom嵌套有问题,拿不到拖拽后的数据,第一想法是通过dom获取拖拽后的数据,然后通过setState重新渲染界面。但拖拽后的dom仍然存在,会出现界面重复的现象。因此最后的方案是在通过dom获取到数据以后通过drake.cancel(true)取消dom的拖拽。最后不要忘了在每次setState的回调中更新容器container。
网友评论