我收到错误类型错误:类型'EventTarget'上不存在属性'remove'。
<img onError={function(e) {
e.target.remove();
}} src="../me.jpg" alt=""/>
答案 0 :(得分:2)
解决方案
替换此:
<img onError={event => event.target.remove()}
与此:
<img onError={event => event.currentTarget.remove()}
说明
您要从(<img />
派发事件的元素是自包含的,本身不能有任何子代。同时,事件处理程序直接在同一节点上定义。这意味着发出事件的节点也是捕获该事件的节点。换句话说,event.target
与event.currentTarget
相同。
这两个具有不同的类型定义。前者仅定义为EvenTarget
,而后者则更具体地定义为EventTarget & HTMLImageElement
。这就是event.currentTarget
配备了remove()
方法并且您不需要任何其他类型保护的原因。
答案 1 :(得分:1)
因此,很明显,在Typescript让我使用.remove
之前,我必须检查e.target是否为HTML元素,尽管它显然是可以使用的,所以似乎并不太浪费时间检查一下。
if (e.target instanceof HTMLElement) {
e.target.remove();
}