Ini terkait dengan # 87 tetapi lebih teknis. Sumber tarik bersarang yang saat ini akan diaktifkan bersama-sama. Ini adalah perilaku yang sangat, sangat salah. Sumber seret anak harus _ selalu_ mencegah pengaktifan induk.
Tapi itu tidak sesederhana kelihatannya dengan backend HTML5.
Saya mencoba menambahkan e.stopPropagation()
ke dalam dragstart
handler, tetapi ada masalah lain. Misalkan List
dan Card
keduanya merupakan sumber seret, Card
ada di dalam List
. Misalkan Card
memiliki canDrag(): false
. Kami tidak dapat memanggil stopPropagation()
dalam kasus ini, karena itu akan mencegah acara mencapai induknya.
Oke, mari tambahkan if (DragOperationStore.isDragging()) return;
ke dragstart
handler. Tetapi ada masalah lain: meskipun event sekarang telah mencapai induknya, jika Anda benar-benar menyeret, browser akan menggunakan target (anak) asli sebagai pratinjau seret.
Ini mungkin dapat diselesaikan dengan secara eksplisit menggunakan this.getDOMNode()
sebagai dragPreview
jika tidak ditentukan dalam beginDrag
, sehingga pratinjau seret dijamin menjadi target saat ini. Saya belum mencobanya. Bagaimanapun, ini sepertinya bukan masalah yang rumit, dan bisa diperebutkan!
Tentunya kita membutuhkan beberapa batasan pada dragPreview
Seperti apa?
Diperbaiki di 0.9.2.
Demo langsung: http://gaearon.github.io/react-dnd/#/nesting -sources
Apakah ada solusi untuk berhenti memanggil induk ketika fungsi canDrag
mengembalikan false
?
Komentar yang paling membantu
Apakah ada solusi untuk berhenti memanggil induk ketika fungsi
canDrag
mengembalikanfalse
?