首页 > 其他分享 >react使用react-draggable制作可拖拽弹框

react使用react-draggable制作可拖拽弹框

时间:2023-11-14 16:44:58浏览次数:24  
标签:uiData draggable targetRect const 弹框 react event

安装

yarn add react-draggable

使用

import Draggable from 'react-draggable';
export default function TableModal() {
  const [bounds, setBounds] = useState({
    left: 0,
    top: 0,
    bottom: 0,
    right: 0,
  });
  const draggleRef = useRef(null);
  const onStart = (_event, uiData) => {
    console.log('targetRect',_event, uiData)

    console.log(_event, uiData)
    const { clientWidth, clientHeight } = window.document.documentElement;
    const targetRect = draggleRef.current?.getBoundingClientRect();
    console.log('targetRect',targetRect)

    if (!targetRect) {
        return;
    }

    setBounds({
        left: -targetRect.left + uiData.x,
        right: clientWidth - (targetRect.right - uiData.x),
        top: -targetRect.top + uiData.y,
        bottom: clientHeight - (targetRect.bottom - uiData.y),
    });
  };

  return (
  <Draggable
    bounds={bounds}
    onStart={(event, uiData) => onStart(event, uiData)}
  >
      <div ref={draggleRef} 
        className={s.wrapPlantPop}  
      >
      // content
      </div>
  </Draggable>
)}

标签:uiData,draggable,targetRect,const,弹框,react,event
From: https://www.cnblogs.com/ZerlinM/p/17831964.html

相关文章

  • 如何实现元素的平滑上升?(vue和react版)
    首先我们看下我们有时候需要在官网或者列表中给元素添加一个动画使元素能够平滑的出现在我们的视野中。 如上图所示,我们在vue中可以自定义指令,当我们需要的时候可以直接使用。废话不多说直接上代码。首先我们创建一个vSlideIn.ts文件import{DirectiveBinding}from'vue......
  • js:React中使用classnames实现按照条件将类名连接起来
    参考文档https://www.npmjs.com/package/classnameshttps://github.com/JedWatson/classnames安装npminstallclassnames示例importclassNamesfrom"classnames";//字符串合并console.log(classNames("foo","bar"));//foobar//对象合并console.lo......
  • 基于React使用swiperjs实现竖向滚动自动轮播
    很多文章,都只提供了js部分,包括官方的文档也只有js部分,如果css设置不正确,会导致轮播图不自动播放。使用的swiper版本:v11.0.3文档https://swiperjs.com/get-startedhttps://swiperjs.com/react实现效果使用vite创建react应用pnpmcreatevitereact-app--templatereact完整依赖pac......
  • react| 封装TimeLine组件
    功能支持居中/局左/居右布局可自定义线条颜色默认情况下图标是圆形,可自定义圆形颜色和大小,同时也可以自定义图标支持自定义内容效果constdata=[{"title":"2022-12-0512:03:40","des":"茶陵县实时广播防火宣传"},...]<TimeLineda......
  • 直播app系统源码,底部弹框显示,底部导航隐藏
    直播app系统源码,底部弹框显示,底部导航隐藏在uni-app中,如果你在tabbar页面显示一个底部弹框,底部导航默认是会依旧显示的。如果你想在弹框显示时隐藏底部导航,你可以使用uni.hideTabBar和uni.showTabBar方法来控制底部导航的显示和隐藏。 exportdefault{ methods:{  ope......
  • 如何使用React/JSX在样式加载完成之前等待React的加载?
    在React中,可以使用加载状态来等待样式加载完成之后再渲染React组件。以下是一种常见的方法:创建一个加载状态isLoading并将其初始化为true。在componentDidMount生命周期方法中使用setTimeout函数来模拟样式加载的延迟。在延迟结束后,将isLoading状态设置为false。在渲染方法中,使用条......
  • 图文并茂手把手教你基于React多种方案使用实现ChatGPT打字机效果
    代码仓库码云仓库前期准备前端项目后端接口(OpenAI接口即可)启动一个新的React项目如果小伙伴们有现有项目,可跳过此步骤直接进入下一步~Next.js是一个全栈式的React框架。它用途广泛,可以让你创建任意规模的React应用——可以是静态博客,也可以是复杂的动态应用。......
  • #yyds干货盘点#react之useEffect
    React的HooksAPI为我们提供了一种新的处理副作用的方式——useEffect。useEffect函数接受两个参数:一个是_副作用函数_和一个_依赖数组_。副作用函数是在组件render之后运行,而依赖数组告诉React何时应该执行或跳过该副作用。如果没有提供依赖数组,`useEffect`将在每次渲染后运行。......
  • ReactNative进阶(十):WebView 应用详解
    (文章目录)一、WebView组件介绍使用WebView组件可通过url来加载显示一个网页,也可以传入一段html代码来显示。下面对其主要属性和方法进行介绍。1.主要属性source:在WebView中载入一段静态的html代码或是一个url(还可以附带一些header选项);automaticallyAdjustCon......
  • #yyds干货盘点#react的useState源码分析
    简单说下为什么React选择函数式组件,主要是class组件比较冗余、生命周期函数写法不友好,骚写法多,functional组件更符合React编程思想等等等。更具体的可以拜读dan大神的blog。其中Functioncomponentscapturetherenderedvalues这句十分精辟的道出函数式组件的优势。但是在16.8之......