هذا مرتبط بالرقم 87 ولكنه أكثر تقنيًا. سيتم تنشيط مصادر السحب المتداخلة حاليًا معًا. هذا سلوك خاطئ للغاية. يجب أن يمنع مصدر سحب الطفل _ دائمًا_ الوالدين من التنشيط.
لكنها ليست بهذه البساطة التي تبدو عليها مع HTML5 الخلفية.
حاولت إضافة e.stopPropagation()
إلى معالج dragstart
، ولكن هناك مشكلة أخرى. لنفترض أن List
و Card
كلاهما من مصادر السحب ، فإن Card
داخل List
. افترض أن Card
لديه canDrag(): false
. لا يمكننا استدعاء stopPropagation()
في هذه الحالة ، لأن ذلك سيمنع الحدث من الوصول إلى الوالد.
حسنًا ، دعنا نضيف بدلاً من ذلك if (DragOperationStore.isDragging()) return;
إلى المعالج dragstart
. ولكن هناك مشكلة أخرى: على الرغم من وصول الحدث الآن إلى الأصل ، إذا قمت بالسحب بالفعل ، فسيستخدم المتصفح الهدف الأصلي (الفرعي) كمعاينة السحب.
من المحتمل أن يكون هذا قابلاً للحل عن طريق استخدام this.getDOMNode()
بشكل صريح كـ dragPreview
إذا لم يكن محددًا في beginDrag
، بحيث تكون معاينة السحب مضمونة لتكون الهدف الحالي. لم أجربها بعد. في كلتا الحالتين ، لا يبدو هذا الأمر وكأنه مشكلة معقدة ، وهو أمر متروك له!
بالتأكيد نحن بحاجة إلى بعض القيود على السحب معاينة
مثل ماذا؟
ثابت في 0.9.2.
عرض حي: http://gaearon.github.io/react-dnd/#/nesting -sources
هل هناك حل لإيقاف استدعاء الوالد عندما ترجع الدالة canDrag
false
؟
التعليق الأكثر فائدة
هل هناك حل لإيقاف استدعاء الوالد عندما ترجع الدالة
canDrag
false
؟