React + re-resizable实现拖拽改变宽度_Aaranlei的博客-程序员秘密

技术标签: react.js  前端  React  javascript  

一、效果展示

二、实现方法

在这里插入图片描述

此效果的实现使用了第三方组件re-resizable,通过此React组件可以很便捷的实现可拖拽改变组件大小的需求。

三、使用方法

  1. 安装re-resizable组件。
npm install --save re-resizable
  1. 简单使用
import React, {
    Component} from 'react';
import {
     Resizable } from "re-resizable";

export default class Demo extends Component {
    
    render() {
    
        return (
            <Resizable
                defaultSize={
    {
    width:320, height:200}}
            >
                可拖拽组件
            </Resizable>
        );
    }
}
  1. 相关常用属性方法
参数 说明 类型
defaultSize 初始默认宽高 string / number
minWidth 宽度下限 string / number
minHeight 高度下限 string / number
maxWidth 宽度上限 string / number
maxHeight 高度上限 string / number
enable 设置可调整方向权限,可调整很多方向具体请参考官网
lockAspectRatio 用于锁定纵横比,还有相关属性方法,具体参考官网 boolean / number
bounds 指定边界大小 window / parent / HTMLElement
  1. 当组件调整时常用方法
  • onResizeStart 调整组件开始时调用。

  • onResize 调整组件进行时调用。

  • onResizeStop 调整组件完成时调用。

简单的使用案例:

import React, {
    Component} from 'react';
import {
     Resizable } from "re-resizable";

export default class Demo extends Component {
    

    onResizeStart = (e) => {
    
        console.log("onResizeStart执行");
        console.log(e);
    };
    onResize = (e) => {
    
        console.log("onResize执行");
        console.log(e);
    };
    onResizeStop = (e) => {
    
        console.log("onResizeStop执行");
        console.log(e);
    };

    render() {
    
        return (
            <Resizable
                style={
    {
    background: "#8cdbd5"}}
                defaultSize={
    {
    width:320, height:200}}
                onResize={
    (e) => this.onResize(e)}
                onResizeStart={
    (e) => this.onResizeStart(e)}
                onResizeStop={
    (e) => this.onResizeStop(e)}
            >
                可拖拽组件
            </Resizable>
        );
    }
}

  1. 使用小结

通过观察这几个方法在控制台所打印的内容可以发现,在每次调用这些方法时我们都可以获取到关于此次调整事件的一些信息,而通过这些信息我们就可以完成许多相关性的工作,例如通过在onResize执行时获取调整的宽度和高度传递给父组件或者使用状态管理器进行管理,这样就可以实现拖拽A组件的同时B组件也跟着变化的效果。

end

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44298385/article/details/123433601

智能推荐

vue项目配置生产环境和发布环境的接口地址_vue项目上线后请求地址还是测试环境的_sxy1847589546的博客-程序员秘密

平常我们团队开发时,都在公司的局域网内,调用接口也是局域网内部的,但是项目上线时,请求接口是线上服务器端的,那么就有接口之间的来回切换问题.在使用vue-cli搭建项目以后,做相关配置就可以实现,不用手动更改接口路径,也可以请求不同环境下的接口.1.设置不同的接口地址先找到以下文件/config/dev.env.js/config/prod.env.js可以看到dev.env.js里面内容如下这是...

numpy-创建一个一维数组_numpy定义一维数组_一个IT小白的博客-程序员秘密

数组中的数据类型,下面实例可以看出优先级规则是:string &gt; float &gt; int

ClassNotFoundException: org.springframework.web.context.ContextLoaderListene_HaHadoop的博客-程序员秘密

今天学习spring+cxf的时候遇到一个问题:在web.xml中配置了spring的上下文监听器:Xml代码  listener>      listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>  listener>   随后启动tom

urllib库安装_urllib库怎么安装_好好爱自己1的博客-程序员秘密

问题:urllib3安装1、python3 pip install urllib安装错误信息: Could not find a version that satisfies the requirement urllib (from versions)No matching d...

【大厂面试】今日头条前端面试17问_柯晓楠的博客-程序员秘密

对async、await的理解,内部原理介绍下Promise,内部实现清除浮动定位问题(绝对定位、相对定位等)从输入URL到⻚面加载全过程tcp3次握手tcp属于哪一层(1 物理层 -&gt; 2 数据链路层 -&gt; 3 网络层(ip)-&gt; 4 传输层(tcp) -&gt; 5 应用层(http))redux的设计思想接入redux的过...

基于kali Linux 的 OpenVAS【Greenbone】虚机 镜像_东方闲仁的博客-程序员秘密

基于kali Linux 的 openvas【greenbone】虚机 镜像新版openvas 切换为gvm后,操作命令有变化,摸索装好后,做了虚机镜像,有需要的请下载试用。链接: https://pan.baidu.com/s/1pWgHUqquCH6tfHEtUDSvUQ 提取码: yxib【OpenVAS是开放式漏洞评估系统】Greenbone Security Assistant 绿骨头安全助理。基于kali Linux 系统的虚机镜像东方闲仁...

随便推点

2018年移动营销市场8大趋势盘点,下一波流量红利在哪?_AppGrowing的博客-程序员秘密

过去一年,移动营销市场的变化可能让很多从业“猜不透”。苹果爸爸继续任性地调整iOS系统的规则;万众期待的苹果竞价广告无限跳票;一年内短视频从唱好到唱衰,再到被广告主爸爸拍手接受;BAT的商业版图聚焦社交广告,信息流占据中国流量半壁江山……未来的移动营销行业如何变化,流量从业者如何与流量巨头快乐玩耍,行业的下一个红利在哪里?App Growing盘点了2018年移动营销市场新趋势,希望可以在

等距离股票配对量化交易策略-R语言_r语言中trading.signals_SuShiGongMao的博客-程序员秘密

为了分散交易中的风险,我们可以在量化交易中选择市场中性策略。我们选择具有基本面相关性的股票对,价格趋势具有趋同和趋离,买多强势的股票,卖空弱势的股票,同时交易,控制股市风险。案例是石油公司埃克森美孚(NYSE:XOM)和石油公司雪佛龙(NYSE:CVX)公司简介:埃克森美孚公司于1882年在美国新泽西州成立,公司的分部及附属公司在美国和世界上大多数其他国家经营或买卖产品。公司主要业务为能源...

TreeSet比较器的用法_treeset外部比较器的用法_我只想把名字改成拂晓神剑的博客-程序员秘密

TreeSet> ts = new TreeSet>(new Comparator>() { @Override public int compare(Map m2, Map m1) { // TODO Auto-generated method stub int i1 = Integer.parseInt(m1.get("all")); int i2 = In

一文让你搞懂面向对象设计原则(单一职责原则,开闭原则,里氏代换原则,依赖倒转原则,接口隔离原则,合成复用原则,迪米特法则)_用一个案例说明单一职责和迪米特_加油,进大厂!!!的博客-程序员秘密

面向对象设计原则 可维护性:指软件能够被理解,改正,适应及扩展的难易程度。 可复用性:指软件能够被重复使用的难易程度。 面向对象设计的目标之一在于支持可维护性服用,一方面需要实现设计方案或者源代码的服用,另一方面 要确保系统能够易于扩展和修改,具有良好的可维护性。 面向对象设计原则为支持可维护性服用而诞生 指导性原则,非强制性原则。 每一个设计模式都符合一个或多个面向对象设计原则,面向对象设计原则是用于评价 一个设计模式的使用效果的重要指标之一。面向对象设计原则概

【bug】【docker】IPv4 forwarding is disabled. Networking will not work_lorogy的博客-程序员秘密

centos7 + dockervi /etc/sysctl.conf添加代码:net.ipv4.ip_forward=1重启network服务:systemctl restart network &amp;&amp; systemctl restart docker查看是否修改成功:sysctl net.ipv4.ip_forward

推荐文章

热门文章

相关标签