zoukankan      html  css  js  c++  java
  • react-grid-layout实现拖拽,网格布局

    安装 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;
  • 相关阅读:
    mysql日志
    MYSQL-事务中的锁与隔离级别
    MYSQL事务的日志
    Innodb核心特性-事务
    Innodb存储引擎-表空间介绍
    innodb存储引擎简介
    MYSQL之存储引擎
    MYSQL之索引配置方法分类
    MYSQL之索引算法分类
    MYSQL之select的高级用法
  • 原文地址:https://www.cnblogs.com/baiyq/p/12911561.html
Copyright © 2011-2022 走看看