React-dnd: Menabrak di isOver dengan targetId kosong

Dibuat pada 7 Mar 2019  ·  7Komentar  ·  Sumber: react-dnd/react-dnd

Jelaskan bugnya
Saya memiliki target drop terhubung yang dihapus dari DOM, setelah ada sesuatu yang dijatuhkan ke sana.

Sekarang sejak meningkatkan ke v7.1.0 , saya mendapatkan

Uncaught TypeError: Cannot read property '0' of undefined

dalam panggilan monitor.isOver() di dalam fungsi collect .
Entah bagaimana, ia melihat bahwa fungsi kumpulkan masih dipanggil sekali lagi, setelah target penurunan telah dihapus ( targetId tidak ditentukan).

Menarik

  • Menurunkan versi kembali ke 6.0.0 menyelesaikan masalah.
  • Juga, menggunakan pembungkus setTimeout singkat di sekitar panggilan balik saya yang menghapus target penurunan, menyelesaikan masalah.

Tahu apa yang bisa menyebabkan itu?

Untuk Mereproduksi
Langkah-langkah untuk mereproduksi perilaku:

  1. Hubungkan target Drop, hubungi monitor.isOver() di collect
  2. di target, kirim tindakan di dalam drop(...) yang menghapus target jatuh
  3. Lihat kesalahan

Perilaku yang diharapkan
Tidak ada masalah waktu dengan isOver dan target drop dapat segera dihapus.

Tangkapan layar
bildschirmfoto 2019-03-07 um 00 58 04

Desktop (harap lengkapi informasi berikut):

  • OS: osx
  • Chrome peramban
  • react-dnd / html5 backend 7.1.0

Komentar yang paling membantu

Ini harus diperbaiki oleh PR cfrank dalam rilis hari ini

Semua 7 komentar

Masalah yang sama

Saya mencoba mengembalikan perubahan ini https://github.com/react-dnd/react-dnd/commit/0feb250b7ee90483e31f3bc159ebf946980d53a7#diff -ac418ba19283aec1fb0b70e6570c5613 dan diselesaikan .. .

Masalah yang sama.
Menunggu perbaikan.
Digulung kembali ke v7.0.2

Dikonfirmasi bahwa kami menerima masalah yang sama - Mengembalikan ke 7.0.2 memperbaiki masalah

Ini disebabkan karena perubahan pada 0feb250b7ee90483e31f3bc159ebf946980d53a7 memungkinkan ID target menjadi undefined tetapi tidak ada yang memeriksa PR dengan perubahan itu untuk isOverTarget

Saat ini prototipenya adalah:

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

tidak seperti fungsi lain yang berubah dalam pr yang memindahkan targetId / sourceId ke

targetId: string | undefined
sourceId: string | undefined

dan cek:

if (!targetId) {
    return false;
}

Perbaikan untuk masalah ini adalah memeriksa targetId menjadi undefined sini: https://github.com/mattkrick/react-dnd/blob/aafcf7d67f8b3a2035b561e97b7874e1064447e4/packages/dnd-core/src /DragDropMonitorImpl.ts#L128

Ini harus diperbaiki oleh PR cfrank dalam rilis hari ini

Luar biasa, teman-teman, terima kasih @cfrank

Apakah halaman ini membantu?
0 / 5 - 0 peringkat