Bagaimana menggunakan cangkuk yang digunakan dan digunakan dari React DND?

Jul 09, 2025

Tinggalkan pesanan

Dalam dunia yang dinamik pembangunan React, keupayaan untuk melaksanakan fungsi drag-and-drop dapat meningkatkan pengalaman pengguna dengan ketara. React DND (Drag and Drop) adalah perpustakaan yang popular yang memudahkan proses menambah ciri-ciri drag-and-drop untuk bertindak balas. Di blog ini, sebagai pembekal cangkuk, saya akan menyelidiki cara menggunakannyaUSEDRAGdanUSEDROPcangkuk dari React DND dengan berkesan.

Memahami React DND

Sebelum kita melompat keUSEDRAGdanUSEDROPcangkuk, mari kita faham secara ringkas apa yang bertindak balas DND. React DND adalah perpustakaan yang membolehkan anda membina antara muka seret dan drop kompleks dalam React dengan mudah. Ia menghilangkan butiran peringkat rendah mengendalikan peristiwa tetikus dan sentuhan, yang membolehkan anda memberi tumpuan kepada logik aplikasi anda.

Konsep teras React DND berkisar mengenai idea "sumber seret" dan "sasaran drop." Sumber seret adalah elemen yang boleh diseret, manakala sasaran drop adalah elemen di mana item yang diseret boleh dijatuhkan. TheUSEDRAGcangkuk digunakan untuk menentukan sumber seretan, danUSEDROPHook digunakan untuk menentukan sasaran drop.

Menyediakan projek

Pertama, anda perlu memasang React DND dalam projek anda. Anda boleh melakukan ini menggunakan npm atau benang:

NPM Pasang React-Dnd React-Dnd-Html5-Backend

TheReact-Dnd-Html5-Backendadalah backend yang menggunakan API drag-and-drop HTML5 untuk mengendalikan operasi seret dan drop sebenar.

Seterusnya, anda perlu membungkus permohonan anda denganDndprovidskomponen. Komponen ini menyediakan konteks yang diperlukan untukUSEDRAGdanUSEDROPcangkuk untuk berfungsi.

import {dndprovider} dari 'react-dnd'; import html5backend dari 'react-dnd-html5-backend'; const app = () => {return (<dndProvider backend = {html5backend}> {/ * komponen aplikasi anda */} </dndprovider>); }; aplikasi lalai eksport;

MenggunakanUSEDRAGCangkuk

TheUSEDRAGHook digunakan untuk menentukan sumber seret. Ia mengambil objek dengan beberapa sifat sebagai hujah. Inilah contoh asas menggunakanUSEDRAGcangkuk:

import {usedRag} dari 'react-dnd'; const dragGableItem = ({id, name}) => {const [{isDragging}, drag] = usedRag ({item: {type: 'item', id, name}, kumpulkan: (monitor) => ({isDragging: monitor.isdragging () const opacity = isDragging? 0.5: 1; kembali (<div ref = {drag} style = {{opacity}}> {name} </div>); }; Eksport Default DragGableItem;

Dalam contoh ini, kita menentukan aDraggableItemkomponen yang boleh diseret. TheUSEDRAGHook mengambil objek dengan dua sifat utama:

  • item: Ini adalah objek yang mewakili data yang diseret. Ia boleh mengandungi sebarang maklumat yang anda mahu lulus bersama dengan item yang diseret. Dalam kes ini, kami menyertakan jenis item, ID, dan namanya.
  • mengumpul: Ini adalah fungsi yang mengembalikan objek dengan data yang anda ingin kumpulkan dari operasi seret. Dalam kes ini, kami mengumpulISDRAGGINGnyatakan darimemantauobjek. ThememantauObjek memberikan maklumat mengenai operasi seret semasa, seperti sama ada item sedang diseret atau tidak.

TheUSEDRAGHook mengembalikan array dengan dua elemen:

  • Elemen pertama adalah objek dengan data yang dikumpulkan darimengumpulfungsi. Dalam kes ini, ia mengandungiISDRAGGINGNegeri.
  • Elemen kedua adalah fungsi yang perlu anda laluirefProp elemen yang anda mahu buat draggable. Fungsi ini melekatkan pengendali acara yang diperlukan untuk elemen untuk menjadikannya draggable.

MenggunakanUSEDROPCangkuk

TheUSEDROPHook digunakan untuk menentukan sasaran drop. Ia juga mengambil objek dengan beberapa sifat sebagai hujah. Inilah contoh asas menggunakanUSEDROPcangkuk:

import {usedRop} dari 'react-dnd'; const droptarget = ({onDrop}) => {const [{candrop, isover}, drop] = usedRop ({acept: 'item', drop: (item) => {onDrop (item);}, kumpulkan: (monitor) const bedonerColor = candrop && isover? 'Lightgreen': 'White'; kembali (<div ref = {drop} style = {{BackgroundColor}}> drop here </div>); }; Eksport Droptarget lalai;

Dalam contoh ini, kita menentukan aDroptargetkomponen yang boleh menerima item yang dijatuhkan. TheUSEDROPHook mengambil objek dengan tiga sifat utama:

new england bathroom accessoriesnew design bathroom accessories

  • menerima: Ini adalah rentetan atau pelbagai rentetan yang menentukan jenis item yang boleh diterima oleh sasaran drop. Dalam kes ini, kami menerima item jenis 'item'.
  • jatuh: Ini adalah fungsi yang dipanggil apabila item dijatuhkan pada sasaran drop. Ia mengambilitemObjek yang diluluskan bersama dengan item yang diseret sebagai hujah. Dalam kes ini, kami memanggilnyaOndropfungsi yang diluluskan sebagai penyokong keDroptargetkomponen.
  • mengumpul: Ini adalah fungsi yang mengembalikan objek dengan data yang anda ingin kumpulkan dari operasi drop. Dalam kes ini, kami mengumpulCandropdanIsoverNegeri darimemantauobjek. ThememantauObjek memberikan maklumat mengenai operasi drop semasa, seperti sama ada item boleh dijatuhkan pada sasaran atau jika ia kini berada di sasaran.

TheUSEDROPHook mengembalikan array dengan dua elemen:

  • Elemen pertama adalah objek dengan data yang dikumpulkan darimengumpulfungsi. Dalam kes ini, ia mengandungiCandropdanIsovernegeri.
  • Elemen kedua adalah fungsi yang perlu anda laluirefProp elemen yang anda ingin buat sasaran drop. Fungsi ini melekatkan pengendali acara yang diperlukan untuk elemen untuk menjadikannya sasaran drop.

MenggabungkanUSEDRAGdanUSEDROP

Sekarang kita tahu cara menggunakanUSEDRAGdanUSEDROPCangkuk secara berasingan, mari kita lihat bagaimana kita dapat menggabungkannya untuk membuat aplikasi seret dan drop yang mudah.

Import React, {Usestate} dari 'React'; import {dndprovider} dari 'react-dnd'; import html5backend dari 'react-dnd-html5-backend'; import DragGableItem dari './DragGableItem'; import droptarget dari './droptarget'; const app = () => {const [dropnerItems, setDroppEdIms] = useState ([]); const handledRop = (item) => {setDroppEdIms ((previtems) => [... previtems, item]); }; kembali (<DndProvider backend = {html5backend}> <div> <h1> item draggable </h1> <draggableItem id = {1} name = "item 1"/> <dragGableItem id = {2} name = "item 2" onDrop = {handledrop}/> </div> <div> <h1> item yang dijatuhkan </h1> {dropnerItems.map ((item) => (<div key = {item.id}> {item.name} </div>)} }; aplikasi lalai eksport;

Dalam contoh ini, kami membuat aplikasi mudah dengan item draggable dan sasaran drop. Apabila item dijatuhkan pada sasaran drop, kami menambahkannya kedropnitemsNegeri.

Penggunaan lanjutan

React DND menyediakan banyak ciri canggih yang boleh anda gunakan untuk mewujudkan antara muka seret dan drop yang lebih kompleks. Contohnya, anda boleh menggunakanMulakandanakhirpanggilan balik diUSEDRAGHook untuk melakukan tindakan apabila operasi seret bermula dan berakhir. Anda juga boleh menggunakanhoverpanggilan balik diUSEDROPHook untuk melakukan tindakan apabila item melayang ke atas sasaran drop.

Inilah contoh menggunakanMulakandanakhirpanggilan balik diUSEDRAGcangkuk:

import {usedRag} dari 'react-dnd'; const dragGableItem = ({id, name}) => {const [{isDragging}, drag] = usedRag ({item: {type: 'item', id, name}, mulakan: (monitor) => {console.log ('operasi drag'); berjaya '); const opacity = isDragging? 0.5: 1; kembali (<div ref = {drag} style = {{opacity}}> {name} </div>); }; Eksport Default DragGableItem;

Dalam contoh ini, kami menambahMulakandanakhirpanggil balik keUSEDRAGcangkuk. TheMulakanPanggilan balik dipanggil apabila operasi seret bermula, danakhirPanggilan balik dipanggil apabila operasi seret berakhir. Kami boleh menggunakan panggilan balik ini untuk melakukan tindakan seperti mesej pembalakan atau mengemas kini keadaan permohonan kami.

Kesimpulan

TheUSEDRAGdanUSEDROPCangkuk dari React DND adalah alat yang berkuasa untuk menambah fungsi drag-and-drop ke aplikasi React anda. Dengan memahami bagaimana cangkuk ini berfungsi dan bagaimana menggunakannya dengan berkesan, anda boleh membuat antara muka pengguna yang menarik dan interaktif.

Sekiranya anda mencari cangkuk berkualiti tinggi untuk bilik mandi anda, lihatlah kamiCangkuk bilik mandi emasdanCangkuk tuala aksesori bilik mandi.

Sekiranya anda berminat untuk membeli cangkuk kami atau mempunyai sebarang pertanyaan, sila hubungi kami untuk perbincangan perolehan terperinci. Kami komited untuk memberikan anda produk dan perkhidmatan terbaik.

Rujukan

  • React DND Dokumentasi
  • React Documentation

Hantar pertanyaan