DndContext, useDraggable dan useDroppable
Sambungkan penyedia DndContext dan cipta elemen yang boleh diseret serta dijatuhkan dengan hook masing-masing.
DndContext, useDraggable dan useDroppable ialah pelajaran React Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran React Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus React Academy merangkumi sejumlah 4 pelajaran.
Membungkus Ciri Anda dengan DndContext
Setiap ciri seret dan lepas dalam dnd-kit mesti dibungkus dalam komponen DndContext. DndContext ialah hab penyelarasan — ia menjejaki seretan aktif, berkomunikasi antara elemen boleh diseret dan elemen boleh menerima lepasan, serta mencetuskan panggilan balik peristiwa. Biasanya, anda meletakkannya pada peringkat komponen yang mengurus keadaan seretan.
Anatomi Cangkuk useDraggable
Cangkuk useDraggable({ id }) menjadikan sesuatu komponen boleh diseret. Ia mengembalikan empat nilai utama: atribut (prop ARIA untuk dihamparkan pada elemen), pendengar (pengendali peristiwa untuk memulakan seretan), setNodeRef (melampirkan rujukan elemen boleh diseret), dan transformasi (terjemahan semasa sebagai {x, y, scaleX, scaleY}).
Menggunakan useDraggable pada Elemen
Untuk menyediakan elemen boleh diseret, hamparkan attributes dan listeners pada elemen tersebut, kemudian hantarkan setNodeRef sebagai prop ref. Atribut itu merangkumi role="button", tabIndex, dan sifat aria. Pendengar itu melampirkan pengendali peristiwa tetikus dan papan kekunci yang diperlukan oleh dnd-kit untuk mengesan permulaan seretan.
Menggunakan Gaya Transformasi
Nilai transform daripada useDraggable ialah null apabila tidak menyeret dan menjadi objek koordinat apabila menyeret. Anda menukarkannya kepada rentetan CSS menggunakan CSS.Translate.toString(transform) daripada pakej @dnd-kit/utilities. Gunakannya sebagai sifat CSS transform pada elemen boleh diseret supaya elemen itu mengikuti kursor secara visual.
Anatomi Cangkuk useDroppable
Cangkuk useDroppable({ id }) menandakan bekas sebagai sasaran lepasan yang sah. Ia mengembalikan isOver (nilai benar semasa elemen boleh diseret berada di atas elemen boleh menerima lepasan ini) dan setNodeRef untuk melampirkan rujukan pada elemen boleh menerima lepasan. Berbeza dengan useDraggable, tiada pendengar peristiwa untuk dihamparkan.
Maklum Balas Visual dengan isOver
Nilai isOver daripada useDroppable membolehkan anda memberikan maklum balas visual semasa seretan. Apabila isOver bernilai benar, anda boleh menggunakan warna sorotan, sempadan, atau perubahan latar belakang pada zon lepasan. Ini membantu pengguna memahami tempat mereka boleh melepaskan item, yang penting untuk kebolehgunaan dan kebolehcapaian.
onDragEnd: Membaca Hasil
Panggilan balik onDragEnd pada DndContext menerima objek peristiwa dengan dua sifat penting: event.active mengandungi item yang diseret (termasuk id), manakala event.over mengandungi sasaran lepasan (atau null jika item dilepaskan di luar mana-mana elemen boleh menerima lepasan). Anda menggunakan ID ini untuk mengemas kini keadaan aplikasi.
Mengemas Kini Keadaan Selepas Elemen Dilepaskan
Dalam onDragEnd, selepas memastikan bahawa event.over bukan nilai kosong, anda mengemas kini keadaan untuk mencerminkan pemindahan itu. Sebagai contoh, jika anda memindahkan kad antara lajur pada papan Kanban, anda mengalih keluar kad itu daripada lajur sumber dan menambahkannya ke lajur sasaran yang dikenal pasti melalui event.over.id.
DragOverlay untuk Pratonton Terapung
DragOverlay memaparkan pratonton terapung bagi elemen yang diseret dan mengikut kursor. Ia dipaparkan sebagai portal (di luar pepohon DOM biasa) supaya tidak pernah terpotong oleh bekas yang menyembunyikan kandungan berlebihan. Tidak seperti elemen asal, tindanan ini boleh mempunyai bayang jatuh, transformasi skala atau putaran untuk menunjukkan bahawa elemen itu sedang diseret.
Menjejaki activeDragId untuk Tindanan
Untuk memaparkan kandungan yang betul dalam DragOverlay, jejak elemen yang sedang diseret menggunakan panggilan balik onDragStart. Simpan ID aktif dalam keadaan: setActiveDragId(event.active.id). Dalam onDragEnd, tetapkan semula kepada nilai kosong. Di dalam DragOverlay, gunakan activeDragId untuk mencari elemen yang betul dan memaparkannya.
Menggabungkan Draggable dan Droppable
Antara muka seret dan lepas sebenar menggabungkan DndContext, berbilang elemen useDraggable, berbilang zon useDroppable dan pengurusan keadaan untuk menjejaki lokasi setiap elemen. Inti pentingnya ialah dnd-kit menyediakan mekanismenya—anda bertanggungjawab mengemas kini keadaan dalam onDragEnd dan memaparkan semula antara muka pengguna untuk mencerminkan susunan baharu.
<p>Utiliti manakah yang menukar objek <code>transform</code> daripada useDraggable menjadi rentetan transformasi CSS?</p>
Utiliti manakah yang menukar objek transform daripada useDraggable kepada rentetan transformasi CSS?
Rumusan Pelajaran: Cangkuk Teras
DndContext ialah hab penyelarasan untuk semua operasi seret dnd-kit. useDraggable menyediakan atribut, pendengar, setNodeRef dan nilai transformasi untuk elemen yang boleh diseret. useDroppable menyediakan isOver dan setNodeRef untuk sasaran pelepasan. onDragEnd memberikan event.active.id dan event.over?.id supaya anda boleh mengemas kini keadaan. DragOverlay memaparkan pratonton terapung berasaskan portal.
Pelajari React dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 88
- Pelajaran
- 324
Soalan Lazim
Adakah pelajaran “DndContext, useDraggable dan useDroppable” percuma?
Ya — teks penuh “DndContext, useDraggable dan useDroppable” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus React Academy, tingkat taraf kepada CoddyKit PRO. Kursus React Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “DndContext, useDraggable dan useDroppable”?
Sambungkan penyedia DndContext dan cipta elemen yang boleh diseret serta dijatuhkan dengan hook masing-masing. Anda berlatih React Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan React Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran React Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “DndContext, useDraggable dan useDroppable” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran React Academy ini?
Ya. Setiap pelajaran React Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Seni Bina dnd-kit dan Reka Bentuk Mengutamakan Kebolehcapaian
- DndContext, useDraggable dan useDroppable
- SortableContext untuk Senarai yang Boleh Disusun Semula
- Tindanan Seretan Tersuai dan DnD Berbilang Bekas