react实现简单的拖拽功能

 更新时间:2022年03月08日 10:53:15   作者:至_臻  
这篇文章主要为大家详细介绍了react实现简单的拖拽功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了react实现简单的拖拽功能的具体代码,供大家参考,具体内容如下

src文件夹下新建文件夹demo  然后在创建两个文件js和css

demo.js文件代码

// react实现拖拽
import React from 'react'
// 引入css样式
import './demo.css'
class Drag extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            translateX: 0,
            translateY: 0,
        };
    }
    small_down = (e) => {
        var obig = this.refs.move.parentNode;
        var osmall = this.refs.move;
        var e = e || window.event;
        /*用于保存小的div拖拽前的坐标*/
        osmall.startX = e.clientX - osmall.offsetLeft;
        osmall.startY = e.clientY - osmall.offsetTop;
        /*鼠标的移动事件*/
        document.onmousemove = function (e) {
            var e = e || window.event;
            osmall.style.left = e.clientX - osmall.startX + "px";
            osmall.style.top = e.clientY - osmall.startY + "px";
            /*对于大的DIV四个边界的判断*/
            let x = obig.offsetWidth - osmall.offsetWidth
            let y = obig.offsetHeight - osmall.offsetHeight
            if (e.clientX - osmall.startX <= 0) {
                osmall.style.left = 0 + "px";
            }
            if (e.clientY - osmall.startY <= 0) {
                osmall.style.top = 0 + "px";
            }
            if (e.clientX - osmall.startX >= x) {
                osmall.style.left = x + "px";
            }
            if (e.clientY - osmall.startY >= y) {
                osmall.style.top = y + "px";
            }
        };
        /*鼠标的抬起事件,终止拖动*/
        document.onmouseup = function () {
            document.onmousemove = null;
            document.onmouseup = null;
        };
    }
    componentDidMount() {
    }
    render() {
        return (
            <div className='box'>
                <div className='box-item' ref="move" onMouseDown={e => this.small_down(e)} style={{ position: "absolute", left: `${this.state.translateX}px`, top: `${this.state.translateY}px` }} />
            </div>
        )
    }
};
export default Drag

demo.css代码

.box{
  width: 100vw;
  height: 100vh;
  position: relative;
}
 
.box-item{
  position: absolute;
  width: 100px;
  height: 100px;
  background: pink;
}

App.js里面

import './App.css';
// 引入demo这个文件
import Drag from './demo/demo'
import React from 'react';
 
class App extends React.Component {
  constructor(props) {
    super(props)
  }
  render() {
    return (
      <div>
        <Drag></Drag>
      </div>
 
    )
  }
}
export default App;

这样就可以实现一个简单的拖拽了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • React创建对话框组件的方法实例

    React创建对话框组件的方法实例

    在项目开发过程中,对于复杂的业务选择功能很常见,下面这篇文章主要给大家介绍了关于React创建对话框组件的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • React+hook实现联动模糊搜索

    React+hook实现联动模糊搜索

    这篇文章主要为大家详细介绍了如何利用React+hook+antd实现联动模糊搜索功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-02-02
  • React路由的history对象的插件history的使用解读

    React路由的history对象的插件history的使用解读

    这篇文章主要介绍了React路由的history对象的插件history的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • react vue背景挂载机器问题

    react vue背景挂载机器问题

    这篇文章主要介绍了react vue背景挂载机器问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • 详解React Native顶|底部导航使用小技巧

    详解React Native顶|底部导航使用小技巧

    本篇文章主要介绍了详解React Native顶|底部导航使用小技巧 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • react如何修改循环数组对象的数据

    react如何修改循环数组对象的数据

    这篇文章主要介绍了react如何修改循环数组对象的数据问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • TypeScript在React项目中的使用实践总结

    TypeScript在React项目中的使用实践总结

    这篇文章主要介绍了TypeScript在React项目中的使用总结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • react封装Dialog弹框的方法

    react封装Dialog弹框的方法

    这篇文章主要为大家详细介绍了react封装Dialog弹框的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • 使用ES6语法重构React代码详解

    使用ES6语法重构React代码详解

    本篇文章主要介绍了使用ES6语法重构React代码详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • 详解如何使用Jest测试React组件

    详解如何使用Jest测试React组件

    在本文中,我们将了解如何使用Jest(Facebook 维护的一个测试框架)来测试我们的React组件,我们将首先了解如何在纯 JavaScript 函数上使用 Jest,然后再了解它提供的一些开箱即用的功能,这些功能专门用于使测试 React 应用程序变得更容易,需要的朋友可以参考下
    2023-10-10

最新评论