React-dnd: أصلح مصادر السحب المتداخلة وكيف تعمل مع canDrag

تم إنشاؤها على ٢٧ فبراير ٢٠١٥  ·  4تعليقات  ·  مصدر: react-dnd/react-dnd

هذا مرتبط بالرقم 87 ولكنه أكثر تقنيًا. سيتم تنشيط مصادر السحب المتداخلة حاليًا معًا. هذا سلوك خاطئ للغاية. يجب أن يمنع مصدر سحب الطفل _ دائمًا_ الوالدين من التنشيط.

لكنها ليست بهذه البساطة التي تبدو عليها مع HTML5 الخلفية.

حاولت إضافة e.stopPropagation() إلى معالج dragstart ، ولكن هناك مشكلة أخرى. لنفترض أن List و Card كلاهما من مصادر السحب ، فإن Card داخل List . افترض أن Card لديه canDrag(): false . لا يمكننا استدعاء stopPropagation() في هذه الحالة ، لأن ذلك سيمنع الحدث من الوصول إلى الوالد.

حسنًا ، دعنا نضيف بدلاً من ذلك if (DragOperationStore.isDragging()) return; إلى المعالج dragstart . ولكن هناك مشكلة أخرى: على الرغم من وصول الحدث الآن إلى الأصل ، إذا قمت بالسحب بالفعل ، فسيستخدم المتصفح الهدف الأصلي (الفرعي) كمعاينة السحب.

من المحتمل أن يكون هذا قابلاً للحل عن طريق استخدام this.getDOMNode() بشكل صريح كـ dragPreview إذا لم يكن محددًا في beginDrag ، بحيث تكون معاينة السحب مضمونة لتكون الهدف الحالي. لم أجربها بعد. في كلتا الحالتين ، لا يبدو هذا الأمر وكأنه مشكلة معقدة ، وهو أمر متروك له!

bug up for grabs

التعليق الأكثر فائدة

هل هناك حل لإيقاف استدعاء الوالد عندما ترجع الدالة canDrag false ؟

ال 4 كومينتر

بالتأكيد نحن بحاجة إلى بعض القيود على السحب معاينة

مثل ماذا؟

ثابت في 0.9.2.
عرض حي: http://gaearon.github.io/react-dnd/#/nesting -sources

هل هناك حل لإيقاف استدعاء الوالد عندما ترجع الدالة canDrag false ؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات