2 回答
TA贡献1811条经验 获得超5个赞
简短的回答:这是由于他们的打字不当造成的。继续施放吧。
长答案:发生这种情况的原因是因为如果您单击<svg />
按钮内部(例如),它将event.target
指向 SVG,这不能保证是按钮(显然)。只有事件currentTarget
指向处理程序所在的元素。因此,做出 React 类型的人决定将事件定义currentTarget
为我们示例中的内容button
,但除了事件是一个 EventTarget 之外,不对事件做出任何保证。target
因此,你不得不施放它。
TA贡献1784条经验 获得超9个赞
我刚刚开始使用 Typescript。我有一个类似的问题,我的解决方案是,我知道该事件总是由 DomElement 触发。
这就是我通知 Typescript 的方式:
function bodyClickHandler(ev: MouseEvent) {
if(containerRef.current && containerRef.current.contains(ev.target as HTMLElement)) return;
setOpen(false);
}
如果您喜欢将其分开:
function bodyClickHandler(ev: MouseEvent) {
const target = ev.target as HTMLElement;
if(containerRef.current && containerRef.current.contains(target)) return;
setOpen(false);
}
- 2 回答
- 0 关注
- 131 浏览
添加回答
举报