React-dnd: Perbaiki sumber seret bersarang dan cara kerjanya dengan canDrag

Dibuat pada 27 Feb 2015  ·  4Komentar  ·  Sumber: react-dnd/react-dnd

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!

bug up for grabs

Komentar yang paling membantu

Apakah ada solusi untuk berhenti memanggil induk ketika fungsi canDrag mengembalikan false ?

Semua 4 komentar

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 ?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat