描述错误
我有一个连接的放置目标,一旦将某些东西放置到它上面,它就会从 DOM 中删除。
现在自从升级到v7.1.0
,我得到
Uncaught TypeError: Cannot read property '0' of undefined
在monitor.isOver()
内部调用collect
功能。
不知何故,它看到在删除目标后( targetId
未定义),collect 函数仍被再次调用。
有趣的
6.0.0
解决了该问题。setTimeout
包装器来删除放置目标,解决了这个问题。知道是什么原因造成的吗?
再现
重现行为的步骤:
collect
调用monitor.isOver()
collect
drop(...)
内分派一个移除放置目标的动作预期行为
isOver
没有时间问题,可以立即删除放置目标。
截图
桌面(请填写以下信息):
7.1.0
同样的问题
我试图恢复此更改https://github.com/react-dnd/react-dnd/commit/0feb250b7ee90483e31f3bc159ebf946980d53a7#diff -ac418ba19283aec1fb0b70e6570c.5613。
同样的问题。
等待修复。
回滚到 v7.0.2
确认我们收到了同样的问题 - 恢复到 7.0.2 解决了这个问题
这是因为 0feb250b7ee90483e31f3bc159ebf946980d53a7 处的更改允许目标 ID 为undefined
但没有人检查带有该更改的 PR 为isOverTarget
目前它的原型是:
public isOverTarget(targetId: string, options = { shallow: false })
与在该 pr 中更改的其他函数不同,这些函数将targetId
/ sourceId
到
targetId: string | undefined
sourceId: string | undefined
并检查:
if (!targetId) {
return false;
}
解决此问题的方法是在此处检查targetId
是否undefined
: https :
这应该由 cfrank 的 PR 在今天的发布中修复
太棒了,伙计们,谢谢@cfrank
最有用的评论
这应该由 cfrank 的 PR 在今天的发布中修复