zoukankan      html  css  js  c++  java
  • React 拖动布局

    安装组件react-grid-layout

    yarn add react-grid-layout

    引入拖动样式,不然没有拖动效果

    import '../../../node_modules/react-grid-layout/css/styles.css'
    import React from 'react'
    import { IProps } from 'config/models'
    import { Row, } from 'antd'
    import _ from "lodash";
    import GridLayout from "react-grid-layout";
    import RGL, { WidthProvider } from "react-grid-layout";
    import '../../../node_modules/react-grid-layout/css/styles.css'
    const ReactGridLayout = WidthProvider(RGL);
    interface LoginProp extends IProps {
    }
    interface LoginState {
        loginName: string,
        loginPassword: string,
        layout: any,
        config: {
            className: string,
            items: number,
            rowHeight: number,
            cols: number
        }
    }
    export default class HomePage extends React.Component<IProps, LoginState> {
        constructor(props: any) {
            super(props)
            const layout = this.generateLayout();
            this.state = {
                loginName: '',
                loginPassword: '',
                layout: layout,
                config: {
                    className: "layout",
                    items: 20,
                    rowHeight: 30,
                    cols: 12
                }
            }
        }
        generateDOM() {
            return _.map(_.range(20), function (i) {
                return (
                    <div key={i} style={{ background: '#ccc' }}>
                        <span className="text">{i}</span>
                    </div>
                );
            });
        }
    
        generateLayout() {
            /*
                static:true + isDraggable:true 全局拖拽,不会自动挤开其他div
                static:false + isDraggable:true 拖拽自动挤开其他div
            */
            return _.map(new Array(20), function (item, i) {
                const y = Math.ceil(Math.random() * 4) + 1;
                return {
                    x: (i * 2) % 12,
                    y: Math.floor(i / 6) * y,
                    w: 2,
                    h: y,
                    i: i.toString(),
                    static: false,
                    isResizable: true,
                    isDraggable: true,
                    isDroppable: true
                };
            });
        }
        // 拖动改变后的心数组
        onLayoutChange(layout: any) {
            debugger
            // this.props.onLayoutChange(layout);
        }
        render() {
            return (
                <>
                    <ReactGridLayout
                        layout={this.state.layout}
                        onLayoutChange={this.onLayoutChange}
                        {...this.state.config}
                    >
                        {this.generateDOM()}
                    </ReactGridLayout>
                </>
            )
        }
    }

    api https://www.ctolib.com/react-grid-layout.html#demos

  • 相关阅读:
    SPOJ1043 GSS1(线段树)
    cf1028C. Rectangles(前缀和)
    cf559C. Gerald and Giant Chess(容斥原理)
    五校联考解题报告
    BZOJ1853: [Scoi2010]幸运数字(容斥原理)
    使用spring-amqp结合使用rabbitmq
    instanceof关键字
    qml学习:对象和属性
    [置顶] 推荐12款很棒的HTML5开发框架和开发工具
    linux系统开机过程描述
  • 原文地址:https://www.cnblogs.com/-Kam/p/12559011.html
Copyright © 2011-2022 走看看