バグを説明する
何かがドロップされると、DOMから削除される接続されたドロップターゲットがあります。
v7.1.0
にアップグレードしてから、
Uncaught TypeError: Cannot read property '0' of undefined
collect
関数内のmonitor.isOver()
呼び出しで。
どういうわけか、ドロップターゲットが削除された後( targetId
は未定義)、collect関数がまだもう一度呼び出されていることがわかります。
面白い
6.0.0
ダウングレードすると、問題が解決しました。setTimeout
ラッパーを使用して、問題を解決しました。何がそれを引き起こす可能性があるのか考えていますか?
再現するには
動作を再現する手順:
collect
monitor.isOver()
を呼び出しますdrop(...)
内にディスパッチします予想される行動
isOver
はタイミングの問題はなく、ドロップターゲットはすぐに削除できます。
スクリーンショット
デスクトップ(次の情報を入力してください):
7.1.0
同じ問題
この変更を元に戻そうとしましたhttps: //github.com/react-dnd/react-dnd/commit/0feb250b7ee90483e31f3bc159ebf946980d53a7#diff-ac418ba19283aec1fb0b70e6570c5613..。
同じ問題。
修正を待っています。
v7.0.2にロールバック
同じ問題が発生していることを確認しました-7.0.2に戻すと問題が修正されます
これは、0feb250b7ee90483e31f3bc159ebf946980d53a7での変更により、ターゲットIDをundefined
できるようになっているが、その変更でPRをisOverTarget
チェックした人がいないために発生しています。
現在のプロトタイプは次のとおりです。
public isOverTarget(targetId: string, options = { shallow: false })
targetId
/ sourceId
をに移動するそのprで変更された他の関数とは異なり
targetId: string | undefined
sourceId: string | undefined
とチェック:
if (!targetId) {
return false;
}
この問題の修正は、ここでtargetId
がundefined
であることを確認することです: https :
これは、今日のリリースでcfrankのPRによって修正されるはずです。
すごい、みんな、ありがとう@cfrank
最も参考になるコメント
これは、今日のリリースでcfrankのPRによって修正されるはずです。