快捷搜索:

React.js组件实现拖拽排序组件功能过程解析

React.js组件实现拖拽排序组件功能过程解析

  因为使用了react.js技术栈,所以封装优先考虑输入和输出。基于数据驱动去渲染页面、控制拖拽元素的顺序。

  由于我不考虑兼容IE8等旧版本浏览器,拖拽的效果采用了HTML5的拖放(Drag 和 drop)。当然,如果要求兼容性丰富,使用鼠标点击的相关事件也很简单。

  有一点需要注意的是,react.js会给所有的属性事件名称前加上on,后面则为驼峰式写法。例如原生的click事件,在react.js里应使用onClick事件。

  onDragStart 控件开始被拖拽时触发的事件,它提供一个dataTransfer.setData()方法,将必要的数据存储在对象中便于在其它方法中调用

  onDrop 当控件被“释放”到一个有效的释放目标位置时触发,我在这个方法中处理数据,并通过它调用onChange方法,将value值暴露给父组件

  其中draggable,onDragStart是被“拖拽”方需要设置的属性,onDragOver,onDragEnter,onDragLeave和onDrop是被“拖入”方需要设置的属性。不过对于我的拖拽排序组件网页缩略图asp源码是什么格式的文件,每一个元素都是拖拽和拖入方

  第二步,既然“她是react.js的组件, 按照习惯,简单的将输入属性定为为valueASP编程,同时,暴露onChange事件监听value的变化,并将其暴露给父组件,同时,暴露一个属性sortKey告诉组件使用哪个key作为排序字段。

  既然涉及到排序,同时允许指定组件每个元素的内部子组件,我将输入数据格式定义为一个数组对象,其中content可以为reactNode:

  值得注意的点其实只有一个,我控制顺序的时候,并没有使用.target.before(document.getElementById({id } ))去实际操控节点,而是在每次触发onDrop时间的时候,处理数据的sort,并通过onChange事件暴露给父组件,将数据输出,通过改变value值触发虚拟dom重新去渲染,以此控制顺序。

您可能还会对下面的文章感兴趣: