当前位置: 首页 > Web前端 > CSS

React制作轮子:拖拽排序组件“Dragact”

时间:2023-03-30 18:15:28 CSS

先来看一张图:项目地址:Github地址(无耻求星!)在线查看(第一次加载需要几秒):预览地址Let'stalk这并不容易。国外没有过年,但毕竟也是过年。虽然没有假期,但家里总会有一顿丰盛的年夜饭。这么说吧,人家上班,我在家过年,肯定不同步。如果不同步会怎样?大约三四个月前,我写了一篇关于《「实战」React实现的拖拽组件》的文章。但是这个组件比较基础,只支持电脑端使用,不能支持拖拽排序,显然不符合要求。我也试图找到一些组件。想改就改,但是有些组件比较老,还是jQ的,不是很适合我们的技术栈。想想还是算了,自己造个轮子吧,反正我这么爱造轮子,手写一个也无所谓。Typescript(TS)最近一直在用TS开发,Eggjs的Ts实践写了一半。这东西真的有毒,因为它会让你上瘾。随便把一个项目迁移到TS,在强大的静态类型检测下,很容易就能发现一堆逻辑错误和边界错误。一番重构后,顿时感觉代码清爽了,头皮又活了过来!因此本组件完全使用Typescript开发,让使用TS的小伙伴使用起来更加方便快捷。其次,如果你想用Javascript开发,完全没有问题。做轮子的一些思考首先我们的需求是用户可以方便的在后台仪表盘上调整各种表盘的位置。图片来自:https://github.com/yezihaohao/react-admin类似这样的界面,我们需要在里面拖各种组件(不得不说,卧槽,我都搞定了嘛,你随便用后台系统,拖着你妹,不让人家吃好年夜饭。)那么首先,我们要考虑几点:技术栈是React(Container)固定范围内的所有挂件,不能超过这个范围。可以设置每个widget的大小,按照一定的边距上下分割。Container中的所有组件不得重叠,并且某些组件必须能够自动排序。有些组件必须是静态的,即固定在那里,不会受到布局的任何变化的影响。手机也可以操作。得益于之前写的拖放组件,避免了很多坑。我也写了这个组件。主要特点是:React组件自动布局的网格系统也可以在手机端操作,自动化程度高。适配静态组件(LiveDemo(预览地址))和可拖拽组件(LiveDemo(预览地址))终于在大年初二早上完成了这个组件,基本可以满足客户需求,但是还有一些TODOLIST:水平交换模式。目前,用户在移动时不会动态调整每个widget的大小。就像Windows窗口一样,widget拖动手柄支持响应式,支持ssr。服务器渲染是如何启动的?npminstall--savedragact写一个例子ReactDOM.render(0

1
2
,document.getElementById('root'));添加一些css/**index.css*/.plant-layout{border:1pxsolidblack;}.layout-child{height:100%;背景:#ef4;显示:弹性;证明内容:居中;align-items:center;}想要一个新的特殊功能?如果您想添加一些新功能或一些很棒的想法,请打开一个问题让我知道,谢谢!如果您已阅读源代码并添加了一些很棒的想法,请发起您的PR。有错误吗?如果你在这个项目中发现了一个bug,请告诉我立即添加一个问题并帮助解决最简单的可重现的例子,可以让我快速定位到bug并帮助你解决,谢谢!最后这是2018年的第二个轮子。当然,造轮子训练的能力不仅仅是改写轮子的能力,还有一个很重要的因素:心态。我为什么要讲心态?举个生活中的例子,你去买一个新的iPhone,假设你以前从来没有用过iPhone,那么你买的时候肯定会用它的功能。敢定,不敢按这个,不敢碰那个。但久而久之,你对iPhone熟悉了,每个角落都玩透了,也就无所谓了,随便玩玩随便调整,换个主题换个强大的越狱。这是一种观念的改变,它也适用于编程。一开始拿别人的框架拿来用,很不熟练。按照作者写的案例,设置成功,解决你的问题,你就不敢再碰那段代码了。后来又来了新的需求,你要在原有的基础上增加新的功能。不过,此时笔者不知为何不再维护该软件。您必须要么找到新的,要么深入查看代码。一开始,你可能只是调整框架代码中的参数。需求越来越多,你变的越来越多,你也就熟悉了这个框架。慢慢的,你就不会再害怕需求了,因为你太熟悉了。这个过程相当长,聪明人几个月,笨懒人可能10年。想要快速获得这种心态转变,你要做的就是“造轮子”。这是最快的方式,也是最肮脏、最愚蠢的方式,但确实是“必效之道”。