React-dnd: التعطل في isOver مع targetId فارغة

تم إنشاؤها على ٧ مارس ٢٠١٩  ·  7تعليقات  ·  مصدر: react-dnd/react-dnd

صف الخلل
لدي هدف إسقاط متصل تمت إزالته من DOM ، بمجرد إسقاط شيء ما عليه.

الآن منذ الترقية إلى v7.1.0 ، أنا أتلقى

Uncaught TypeError: Cannot read property '0' of undefined

في المكالمة monitor.isOver() داخل وظيفة collect .
بطريقة ما ، ترى أن وظيفة التجميع لا تزال تُسمى مرة أخرى ، بعد إزالة هدف الإسقاط ( targetId غير محدد).

مثير للإعجاب

  • أدى الرجوع إلى 6.0.0 حل المشكلة.
  • أيضًا ، باستخدام غلاف قصير setTimeout حول رد الاتصال الخاص بي والذي أزال هدف الإسقاط ، تم حل المشكلة.

أي فكرة عن سبب ذلك؟

لإعادة إنتاج
خطوات إعادة إنتاج السلوك:

  1. قم بتوصيل هدف الإسقاط ، اتصل بـ monitor.isOver() collect
  2. في الهدف ، أرسل إجراءً داخل drop(...) يزيل هدف الإسقاط
  3. انظر الخطأ

سلوك متوقع
لا توجد مشكلة توقيت مع isOver ويمكن إزالة أهداف الإسقاط على الفور.

لقطات
bildschirmfoto 2019-03-07 um 00 58 04

سطح المكتب (يرجى استكمال المعلومات التالية):

  • نظام التشغيل: OS x
  • متصفح كروم
  • رد فعل- dnd / html5 backend 7.1.0

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

يجب إصلاح ذلك من خلال العلاقات العامة لـ cfrank في إصدار اليوم

ال 7 كومينتر

المشكلة نفسها

حاولت التراجع عن هذا التغيير https://github.com/react-dnd/react-dnd/commit/0feb250b7ee90483e31f3bc159ebf946980d53a7#diff -ac418ba19283aec1fb0b70e6570c5613 وتم حلها ...

المشكلة نفسها.
في انتظار الإصلاح.
التراجع إلى الإصدار 7.0.2

تم التأكيد على أننا نتلقى نفس المشكلة - يؤدي الرجوع إلى 7.0.2 إلى إصلاح المشكلة

يحدث هذا لأن التغيير في 0feb250b7ee90483e31f3bc159ebf946980d53a7 يسمح لمعرف الهدف أن يكون undefined لكن لم يتحقق أحد من PR بهذا التغيير لـ isOverTarget

النموذج الأولي حاليًا هو:

public isOverTarget(targetId: string, options = { shallow: false })

على عكس الوظائف الأخرى التي تغيرت في تلك العلاقات العامة والتي تنقل targetId / sourceId إلى

targetId: string | undefined
sourceId: string | undefined

و تأكد:

if (!targetId) {
    return false;
}

سيكون إصلاح هذه المشكلة هو التحقق من أن targetId هو undefined هنا: https://github.com/mattkrick/react-dnd/blob/aafcf7d67f8b3a2035b561e97b7874e1064447e4/packages/dnd-core/src /DragDropMonitorImpl.ts#L128

يجب إصلاح ذلك من خلال العلاقات العامة لـ cfrank في إصدار اليوم

مذهل يا رفاق ، شكرًا cfrank

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