React 拖动设置单元格的大小

在实际table表格的场景中,有很多时候都需要用到拖动调整table单元格的大小。而在React各种的文章中,我只能找到很少的相关资料,大部分也是贴近另一种项目需求——拖动窗口。当我把这个功能实现的时候,我觉得我有必要把它写下来,以备不时之需。

// 改变单元格尺寸,
//参数:x-table数组的一维索引,y-table数组的二维索引,width-原单元格宽度,height-原单元格高度,ev-对应得对象
cellDown(x, y, width, height, ev) {
  //获取table数组,以及单元格鼠标点击事件的起始位置
  var table = this.props.table,disX = ev.pageX,disY = ev.pageY;
  //引入self变量主要是为了获取react中的this,使得在document中能够使用
  var self = this;
  document.onmousemove = function(e) {//鼠标移动时
    e.preventDefault();
    let X = e.pageX - disX, Y = e.pageY - disY;//计算前后坐标的差值
    table[x][y].width = width + X;//为宽度加上差值
    table[x][y].height = height + Y;//为高度加上差值
    self.props.setTable(table);//通过调用父组件的setTable方法重新渲染table
  }
  document.onmouseup = function(e) {//鼠标抬起时
    document.onmousemove = null;
    document.onmouseup = null;
  }
}

在本例中展示的是一个子组件的方法,因此重新渲染table的方法被我写在父组件中,若table在子组件中设置,则直接调用子组件中的方法进行渲染即可。


效果示意图
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 作为一个合格的开发者,不要只满足于编写了可以运行的代码。而要了解代码背后的工作原理;不要只满足于自己的程序...
    六个周阅读 8,649评论 1 33
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,125评论 3 119
  • 一、什么是瀑布流 传统手机照片墙里面的相片都是规则的大小,整齐排列。瀑布流呈现出来的相片会给人一种交错感,瀑布流除...
    视野跳动阅读 3,015评论 2 4
  • 看过很多很多人励志的故事,有三四岁尚不知事的小孩子,有青春期惶惑不安的成长故事,也有年逾古稀的老人那种沧桑细腻的情...
    宁漫溯阅读 458评论 0 0
  • 野草衰枝染白霜,南迁候鸟避寒凉。 北风有意摧残叶,落英无悔未成殇。 六出飞花潜入夜,晓迎暖日照西床。 一生屐旅多磨...
    商亚萍阅读 314评论 -1 7

友情链接更多精彩内容