安装 react-grid-layout

npm install react-grid-layout
import React, { Component } from 'react';
import { Responsive, WidthProvider } from 'react-grid-layout';
import EUevent from '@/components/eventcomponent/EUevent';
import Map from '../chart/plantmap';
import EchartsBar from '../chart/BarChart';
import EchartsLine from '../chart/LineChart';
import EchartsPie from '../chart/PieChart';
import { message } from 'antd'; const ResponsiveGridLayout = WidthProvider(Responsive);
const CPhomepage_title = {
display: 'flex',
justifyContent: 'space-between',
alignItems: 'center',
lineHeight: '40px',
padding: '0 20px',
color: '#686868'
}
const CPhomepage_num = {
lineHeight: '190px',
fontSize: '50px',
color: '#1F1F1F',
textAlign: 'center'
} class EUindex extends Component {
constructor(props) {
super(props);
this.state = {
isEUorCP: 'CP',
EUlayout: [
{ i: 'g', x: 0, y: 0, w: 6, h: 10 },
{ i: 'a', x: 0, y: 0, w: 6, h: 10 },
{ i: 'b', x: 6, y: 0, w: 6, h: 10 },
{ i: 'c', x: 0, y: 10, w: 3, h: 10 },
{ i: 'd', x: 3, y: 10, w: 3, h: 10 },
{ i: 'e', x: 6, y: 10, w: 3, h: 10 },
{ i: 'f', x: 9, y: 10, w: 3, h: 10 }
]
};
}
UNSAFE_componentWillMount() {
this.getUserInfo() };
componentWillUnmount() {
// componentWillMount进行异步操作时且在callback中进行了setState操作时,需要在组件卸载时清除state
this.setState = () => {
return;
};
}
getUserInfo=()=>{
var _EUlayoutArr = JSON.parse(localStorage.getItem("EUlayoutArr"))
if (_EUlayoutArr === null || _EUlayoutArr === undefined) {
console.log("--null----")
this.setState({
EUlayout: [
{ i: 'g', x: 0, y: 0, w: 6, h: 10 },
{ i: 'a', x: 0, y: 0, w: 6, h: 10 },
{ i: 'b', x: 6, y: 0, w: 6, h: 10 },
{ i: 'c', x: 0, y: 10, w: 3, h: 10 },
{ i: 'd', x: 3, y: 10, w: 3, h: 10 },
{ i: 'e', x: 6, y: 10, w: 3, h: 10 },
{ i: 'f', x: 9, y: 10, w: 3, h: 10 }
]
}) }
else {
console.log("youzhi----")
this.setState({
EUlayout: _EUlayoutArr
})
// this.state.EUlayout = _EUlayoutArr
}
} //存储拖拽移动的位置到缓存
onLayoutChange = (layout) => {
console.log(layout, "=----layout----")
let EUlayoutArr = []; var index = -1;
localStorage.removeItem('CPlayoutArr')
layout.forEach(({ i, x, y, w, h }) => {
index++;
EUlayoutArr[index] = { i, x, y, w, h }
})
localStorage.setItem('EUlayoutArr', JSON.stringify(EUlayoutArr)) } render() { return (
<>
<div className="dashboardContent">
<ResponsiveGridLayout className="layout" layouts={{ lg: this.state.EUlayout }} rowHeight={30}
breakpoints={{ lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 }}
cols={{ lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 }}
isResizable={false}
onLayoutChange={this.onLayoutChange}
margin={[8, 8]}
>
<div className='dragcontent' key="g">
<div id='dragcontent_a'>设备分布</div>
<Map title="map" />
</div>
<div className='dragcontent' key="a"> <div id='dragcontent_a'>最新事件列表</div>
<EUevent/>
</div>
<div className='dragcontent' key="b"> <div id='dragcontent_a'>事件统计(最近七天)</div>
<EchartsLine />
</div>
<div className='dragcontent' key="c"> <div id='dragcontent_a'>可用性指标</div>
<EchartsPie content={1} />
</div>
<div className='dragcontent' key="d"> <div id='dragcontent_a'>环境指标</div>
<EchartsPie content={2} />
</div>
<div className='dragcontent' key="e"> <div id='dragcontent_a'>可靠性指标</div>
<EchartsPie content={3} />
</div>
<div className='dragcontent' key="f"> <div id='dragcontent_a'>负荷指标</div>
<EchartsPie content={4} />
</div>
</ResponsiveGridLayout>
</div>
</>
);
}
} export default EUindex;

react-grid-layout实现拖拽,网格布局的更多相关文章

  1. React造轮子:拖拽排序组件「Dragact」

    先来一张图看看: 项目地址:Github地址 (无耻求星!) 在线观看(第一次加载需要等几秒):预览地址 说起来不容易,人在国外没有过年一说,但是毕竟也是中国年,虽然不放假,但是家里总会主内一顿丰盛的 ...

  2. jQuery图片列表拖拽排序布局

    在线演示 本地下载

  3. CSS Grid 网格布局教程

    一.概述 网格布局(Grid)是最强大的 CSS 布局方案. 它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局.以前,只能通过复杂的 CSS 框架达到的效果,现在浏览器内置了. 上 ...

  4. React.js实现原生js拖拽效果及思考

    一.起因&思路 不知不觉,已经好几天没写博客了...近来除了研究React,还做了公司官网... 一直想写一个原生js拖拽效果,又加上近来学react学得比较嗨.所以就用react来实现这个拖 ...

  5. Dev Grid拖拽移动行

    效果图 源码下载 拖拽时带行截图效果实现代码 /// <summary> /// 拖拽帮助类 /// </summary> public static class DragHe ...

  6. React Editor 应用编辑器(1) - 拖拽功能剖析

    这是可视化编辑器 Gaea-Editor 的第一篇连载分析文章,希望我能在有限的篇幅讲清楚制作这个网页编辑器的动机,以及可能带来的美好使用前景(画大饼).它会具有如下几个特征: 运行在网页 文档流布局 ...

  7. 鸿蒙的js开发部模式16:鸿蒙布局Grid网格布局的应用一

    鸿蒙入门指南,小白速来!从萌新到高手,怎样快速掌握鸿蒙开发?[课程入口]目录:1.Grid简介2.使用Grid布局实现的效果3.grid-row-gap和grid-colunm-gap属性4.< ...

  8. Grid 网格布局详解

    Grid网格布局详解: Grid布局与Flex布局有着一定的相似性,Grid布局是将容器划分成行和列,产生单元格,可以看做是二维布局. 基本概念: 采用网格布局的区域,称为"容器" ...

  9. Vue-Grid-Layout分享一款好用的可拖拽组件

    在使用Grafana的过程中,发现Grafana关于视图页面中每一个面板都可拖拽,可随意放大放小,体验非常棒,F12看了Grafana的代码,看打包后的代码很像react,进一步css,看到有grid ...

  10. RecyclerView拖拽排序和滑动删除实现

    效果图 如何实现 那么是如何实现的呢?主要就要使用到ItemTouchHelper ,ItemTouchHelper 一个帮助开发人员处理拖拽和滑动删除的实现类,它能够让你非常容易实现侧滑删除.拖拽的 ...

随机推荐

  1. 用 Python 获取百度搜索结果链接

    前言 近期有许多项目需要这个功能,由于Python实现起来比较简单就这么做了,代码贴下来觉得好点个赞吧~ 代码 # coding: utf-8 import os import time import ...

  2. Java 多线程 --死锁及解决方案

    在java 多线程中 过多的同步造成相互不释放资源 从而相互等待,造成死锁线现象,一般发生于同步中持有多个对象锁 如以下代码: public class DeadLock { public stati ...

  3. Python模块---制作新冠疫情世界地图()

    目录 pyecharts模块 简介 安装pyecharts 测试pyecharts模块 pyecharts实战:绘制新冠肺炎疫情地图 需求分析 请求数据 提取数据 处理数据 制作可视化地图 设置可视化 ...

  4. javascript-如何获取标签的内容

    <input>标签的: document.getElementById("id").value ; 其他文本标签的: document.getElementById(& ...

  5. 解决QQ可以登录但是网页打不卡 ,提示代理服务器拒绝连接 的问题。

  6. kubernetes (一)使用Rancher搭建集群

    目录 如何快速高效部署K8s集群 Rancher是什么 为什么是Rancher 1.0.安装Rancher 1.1.环境 1.2.选择Rancher版本 1.3.拉取镜像 2.0.容器启动高级选项 2 ...

  7. Python学习15之python内置六大标准类型

    1.六大标准类型:数值型,str,list,set,tuple,dic 2.数值型:int,float,bool,complex 3.区别: 1)数值型和str,tuple都是不可变类型 而list, ...

  8. Linux系统管理第五次作业 LVM逻辑卷 磁盘配额

    1.为主机增加80G SCSI 接口硬盘 2.划分三个各20G的主分区 [root@localhost ~]# fdisk /dev/sdf 欢迎使用 fdisk (util-linux 2.23.2 ...

  9. Java多线程并发系列之闭锁(Latch)和栅栏(CyclicBarrier)

    JAVA并发包中有三个类用于同步一批线程的行为,分别是闭锁(Latch),信号灯(Semaphore)和栅栏(CyclicBarrier).本贴主要说明闭锁(Latch)和栅栏(CyclicBarri ...

  10. python- 函数高级

    函数高级 一.默认参数 1.默认参数概念 默认参数指函数/方法在定义时为形参赋值,对应的形参称为默认参数. 默认参数是一个参数定义期的概念,与调用无关. 2.默认参数的作用 如果参数定义默认参数,在调 ...