react-draggable實(shí)現(xiàn)拖拽功能實(shí)例詳解
屬性
常用屬性
| 屬性 | 默認(rèn)值 | 介紹 |
|---|---|---|
| axis | x | handle拖動(dòng)的方向,可選值 x ,y,both |
| handle | 無 | 指定拖動(dòng)handle的class |
| position | 無 | handle的位置,需要實(shí)時(shí)改變,否則handle無法拖動(dòng),類似于react的受控組件 |
| onStrat | 方法 | 拖動(dòng)開始 |
| onDrag | 方法 | 拖動(dòng)中 |
| onStop | 方法 | 結(jié)束拖動(dòng) |
| onMouseDown | 方法 | 觸發(fā)點(diǎn)擊 |
屬性列表
| 屬性名稱 | 說明 |
|---|---|
| bounds | 指定移動(dòng)的邊界值;可以設(shè)置的值 left:number,top:number,right:number,bottom:number |
| group | group= “name”,相同的組之間可以相互拖拽 |
| sort | sort= “true”,是否開啟內(nèi)部排序,如果設(shè)置為false,它所在組無法排序,在其他組可以拖動(dòng)排序 |
| delay | delay= “0”, 鼠標(biāo)按下后多久可以拖拽 |
| touchStartThreshold | 鼠標(biāo)移動(dòng)多少px才能拖動(dòng)元素 |
| disabled | disabled= “true”,是否啟用拖拽組件 |
| animation | 拖動(dòng)時(shí)的動(dòng)畫效果,還是很酷的,數(shù)字類型。如設(shè)置animation=1000表示1秒過渡動(dòng)畫效果 |
| handle | handle=“.mover” 只有當(dāng)鼠標(biāo)移動(dòng)到css為mover類的元素上才能拖動(dòng) |
| filter | filter=“.unmover” 設(shè)置了unmover樣式的元素不允許拖動(dòng) |
| draggable | draggable=“.item” 那些元素是可以被拖動(dòng)的 |
| ghostClass | ghostClass=“ghostClass” 設(shè)置拖動(dòng)元素的占位符類名,你的自定義樣式可能需要加!important才能生效,并把forceFallback屬性設(shè)置成true |
| chosenClass | ghostClass=“hostClass” 被選中目標(biāo)的樣式,你的自定義樣式可能需要加!important才能生效,并把forceFallback屬性設(shè)置成true |
| dragClass | dragClass="dragClass"拖動(dòng)元素的樣式,你的自定義樣式可能需要加!important才能生效,并把forceFallback屬性設(shè)置成true |
| dataIdAttr | dataIdAttr: ‘data-id’ |
| forceFallback | 默認(rèn)false,忽略HTML5的拖拽行為,因?yàn)閔5里有個(gè)屬性也是可以拖動(dòng),你要自定義ghostClass chosenClass dragClass樣式時(shí),建議forceFallback設(shè)置為true |
| fallbackClass | 默認(rèn)false,克隆的DOM元素的類名 |
| allbackOnBody | 默認(rèn)false,克隆的元素添加到文檔的body中 |
| fallbackTolerance | 拖拽之前應(yīng)該移動(dòng)的px |
| scroll | 默認(rèn)true,有滾動(dòng)區(qū)域是否允許拖拽 |
| scrollFn | 滾動(dòng)回調(diào)函數(shù) |
| scrollSensitivity | 距離滾動(dòng)區(qū)域多遠(yuǎn)時(shí),滾動(dòng)滾動(dòng)條 |
| scrollSpeed | 滾動(dòng)速度 |
事件列表
| 屬性名稱 | 說明 |
|---|---|
| start | 開始拖動(dòng)時(shí)觸發(fā)的事件 |
| add | 從一個(gè)數(shù)組拖拽到另外一個(gè)數(shù)組時(shí)觸發(fā)的事件 |
| remove | 移除事件 |
| update | 拖拽變換位置時(shí)觸發(fā)的事件 |
| end | 拖拽完成時(shí)的事件 |
| choose | 鼠標(biāo)點(diǎn)擊選中要拖拽元素時(shí)的事件 |
| unchoose | 選中后松開鼠標(biāo)的事件 |
| sort | 位置變化時(shí)的事件 |
| clone | 從一個(gè)數(shù)組拖拽到另外一個(gè)數(shù)組時(shí)觸發(fā)的事件和add不同,clone是復(fù)制了數(shù)組元素 |
| move | 自定義控制那些元素可以拖拽或不允許拖拽并控制是否允許???/td> |
舉例
首先安裝 react-draggable
yarn add react-draggable / npm i react-draggable
在頁面中導(dǎo)入react-draggable
import Draggable from 'react-draggable'
實(shí)現(xiàn)移動(dòng)
在Draggable 中必須要用一個(gè)容器來包裹住你要拖動(dòng)的東西,否則不能用
1.基本
<Draggable size={200}>
<div>
<div className='mover' ></div>
<div className='unmover'>
asdasdasd
</div>
</div>
</Draggable>效果

2. 初始化開始位置
<Draggable size={200} defaultPosition={{ x: 25, y: 25 }}>
<div>
<div className='mover' ></div>
<div className='unmover'>
asdasdasd
</div>
</div>
</Draggable>效果

3. 限制拖拽范圍
<Draggable size={200} defaultPosition={{ x: 25, y: 25 }}
bounds={{ top: 0 }}
>
<div>
<div className='mover' ></div>
<div className='unmover'>
asdasdasd
</div>
</div>
</Draggable>效果

4. 限制拖拽內(nèi)容
<Draggable size={200} defaultPosition={{ x: 25, y: 25 }}
bounds={{ top: 0 }}
handle=".mover"
filter=".unmover"
>
<div>
<div className='mover' ></div>
<div className='unmover'>
asdasdasd
</div>
</div>
</Draggable>效果

希望小編寫的能夠幫助到你??
總結(jié)
到此這篇關(guān)于react-draggable實(shí)現(xiàn)拖拽功能的文章就介紹到這了,更多相關(guān)react-draggable拖拽功能內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳細(xì)談?wù)凴eact中setState是一個(gè)宏任務(wù)還是微任務(wù)
學(xué)過react的人都知道,setState在react里是一個(gè)很重要的方法,使用它可以更新我們數(shù)據(jù)的狀態(tài),下面這篇文章主要給大家介紹了關(guān)于React中setState是一個(gè)宏任務(wù)還是微任務(wù)的相關(guān)資料,需要的朋友可以參考下2021-09-09
React無限滾動(dòng)插件react-infinite-scroll-component的配置優(yōu)化技巧
react-infinite-scroll-component是React無限滾動(dòng)插件,簡化滾動(dòng)加載邏輯,支持自定義提示和觸發(fā)距離,兼容移動(dòng)端,體積小巧,適用于列表、聊天等場(chǎng)景,需結(jié)合虛擬滾動(dòng)優(yōu)化性能,本文介紹React無限滾動(dòng)插件react-infinite-scroll-component的配置+優(yōu)化,感興趣的朋友一起看看吧2025-09-09
React中使用Workbox進(jìn)行預(yù)緩存的實(shí)現(xiàn)代碼
Workbox是Google Chrome團(tuán)隊(duì)推出的一套 PWA 的解決方案,這套解決方案當(dāng)中包含了核心庫和構(gòu)建工具,因此我們可以利用Workbox實(shí)現(xiàn)Service Worker的快速開發(fā),本文小編給大家介紹了React中使用Workbox進(jìn)行預(yù)緩存的實(shí)現(xiàn),需要的朋友可以參考下2023-11-11
React?+?Typescript領(lǐng)域初學(xué)者的常見問題和技巧(最新)
這篇文章主要介紹了React?+?Typescript領(lǐng)域初學(xué)者的常見問題和技巧,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06
react事件對(duì)象無法獲取offsetLeft,offsetTop,X,Y等元素問題及解決
這篇文章主要介紹了react事件對(duì)象無法獲取offsetLeft,offsetTop,X,Y等元素問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2022-08-08
React應(yīng)用框架Dva數(shù)據(jù)流向原理總結(jié)分析
這篇文章主要為大家介紹了React 應(yīng)用框架Dva數(shù)據(jù)流向原理總結(jié)分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12

