我收到错误类型错误:类型"事件目标"上不存在属性"删除"。
<img onError={function(e) {
e.target.remove();
}} src="../me.jpg" alt=""/>
解决方案
替换此内容:
<img onError={event => event.target.remove()}
有了这个:
<img onError={event => event.currentTarget.remove()}
解释
从中调度事件的元素 (<img />
) 是自包含的,本身不能有任何子元素。同时,事件处理程序直接在同一节点上定义。这意味着发出事件的节点也是捕获该事件的节点。换句话说,event.target
将与event.currentTarget
相同。
这两者具有不同的类型定义。前者被定义为只是EvenTarget
而后者更具体EventTarget & HTMLImageElement
。这就是为什么event.currentTarget
配备了remove()
方法,并且您不需要任何额外的类型防护装置。
所以显然我必须在 Typescript 允许我使用 .remove
之前检查 e.target 是否是 HTML 元素,尽管很明显它会是,所以似乎没有很好地利用时间来检查它。
if (e.target instanceof HTMLElement) {
e.target.remove();
}