react dnd用於建立複雜的拖放介面,並保持元件之間的耦合,是一組react高階元件;使用時只需用對應的API將目標元件包裹,即可實現拖動或接受拖曳元素的功能;不需要判斷拖曳狀態,只要在傳入的spec物件中各個狀態屬性中做對應處理即可。
本教學操作環境:Windows10系統、react17.0.1版、Dell G3電腦。
react dnd的用法是什麼
React-DnD是一組React實用程序,可幫助您建立複雜的拖放介面,同時保持元件之間的耦合。它非常適合Trello和Storify之類的應用程序,其中拖曳可在應用程式的不同部分之間傳輸數據,並且元件可以響應拖放事件更改其外觀和應用程式狀態。
如上圖的團隊任務合作平台很多公司都在使用。 React-DnD是這一類業務場景的優秀開源解決方案。
接下來我們先介紹它的使用方法。
使用方法
安裝
安裝的時候我們需要同時安裝backend與react-dnd。
為什麼與要這樣設計呢,後面原始碼解析的時候會詳細說明。
DndProvider注入
DndProvider元件為您的應用程式提供React-DnD功能。必須透過backendc參數將其註入後端,但是也可以將其註入window物件。
backend後端是React-DnD中非常好的一種設計方法。可以理解為具體拖曳的實現方式。
DndProvider api
backend: 必填,dnd後端可以使用官方的提供的兩個HTML5Backend or TouchBackend,或者也可以自己寫backend後端。
context: 選填,使用者配置後端的上下文,這取決於後端的實作。
options: 設定後端對象,自訂時可以傳入backend。後面有例子。
useDrag 宣告拖曳來源
userDrag用於將目前元件用作拖曳來源的鉤子。
其中useDrag傳回的參數有
#arguments[0]: 一個對象,其中包含從collect函數收集的屬性。如果collect未定義函數,則傳回一個空物件。
arguments[1]: 拖曳來源的連接器功能。這必須附加到DOM的可拖曳部分。
arguments[2]: 用來拖曳預覽的連接器功能。這可以附加到DOM的預覽部分。
然後useDrag傳入的參數有
item: 必填。一個普通的JavaScript對象,描述了要拖曳的資料。這是可用於放置目標的有關拖曳來源的唯一資訊
item.type: 必填,且必須是字串,ES6符號。只有註冊為相同類型的放置目標才會對此項目做出反應
previewOptions: 選填。描述拖曳預覽選項的普通JavaScript物件
options: 選填,一個普通的物件。如果元件的某些道具不是標量的(即不是原始值或函數),則arePropsEqual(props, otherProps)在options物件內部指定自訂函數可以提高效能。除非您有效能問題,否則不要擔心。
begin(monitor):選填,拖曳操作開始時觸發。不需要傳回任何內容,但是如果傳回對象,它將覆寫item規範的預設屬性。
end(item, monitor):選填,拖曳停止的時候,end將會被呼叫。
canDrag(monitor):選填。使用它可以指定當前是否允許拖曳。預設允許
isDragging(monitor):選填。預設情況下,只有啟動拖曳操作的拖曳來源才會被視為拖曳
collect:選填,收集功能。
推薦學習:《react影片教學》
以上是react dnd的用法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

TonavigateReact'scomplexecosystemeffectively,understandthetoolsandlibraries,recognizetheirstrengthsandweaknesses,andintegratethemtoenhancedevelopment.StartwithcoreReactconceptsanduseState,thengraduallyintroducemorecomplexsolutionslikeReduxorMobXasnee

RectuseSkeyStoeficelyListifyListIdifyListItemsbyProvidistableIdentityToeachelement.1)keysallowReaeActTotRackChangEsInListSwithouterSwithoutreThoutreTheenteringTheEntirelist.2)selectuniqueandstablekeys,避免使用

KeysinrectarecrucialforOptimizingTherEnderingProcessandManagingDynamicListSefectefection.tospotaTandFixKey與依賴的人:1)adduniqueKeykeystoliquekeystolistItemStoAvoidWarningSwarningSwarningSwarningSperformance和2)useuniqueIdentifiersIdentifiersIdentifiersIdentifiersFromdatainSteAtofIndicessuessuessessemessuessessemessemessemesseysemessekeys,3)

React的單向數據綁定確保數據從父組件流向子組件。 1)數據流向單一,父組件狀態變化可傳遞給子組件,但子組件不能直接影響父組件狀態。 2)這種方法提高了數據流的可預測性,簡化了調試和測試。 3)通過使用受控組件和上下文,可以在保持單向數據流的同時處理用戶交互和組件間通信。

KeysinReactarecrucialforefficientDOMupdatesandreconciliation.1)Choosestable,unique,andmeaningfulkeys,likeitemIDs.2)Fornestedlists,useuniquekeysateachlevel.3)Avoidusingarrayindicesorgeneratingkeysdynamicallytopreventperformanceissues.

USESTATE()ISCICIALFOROPTIMINECREACTAPPPERFORMACTACEUTOPACTONCACTONRE REDERSANDUPDATES.TOOPTIMIZE:1)USEUSECALLBACKTOMEMOEMOEIZEFUNCTIONSANDPREVENTUNNNNNNNNNNNNNNNNENESMARYRERER.2)limemememememoforcachingExpensiveComputations.3)

使用Context和useState共享狀態是因為它們可以簡化大型React應用中的狀態管理。 1)減少propdrilling,2)代碼更清晰,3)更易管理全局狀態。但要注意性能開銷和調試複雜性,合理使用Context和優化技術可以提升應用的效率和可維護性。

使用不正確的鍵會導致React應用程序中的性能問題和意外行為。 1)鍵是列表項的唯一標識符,幫助React高效地更新虛擬DOM。 2)使用相同或不唯一的鍵會導致列表項重新排序和組件狀態丟失。 3)使用穩定且唯一的標識符作為鍵可以優化性能,避免全量重渲染。 4)使用工具如ESLint來驗證鍵的正確性。正確使用鍵可以確保React應用的高效和可靠性。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

WebStorm Mac版
好用的JavaScript開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

禪工作室 13.0.1
強大的PHP整合開發環境