类型“ EventTarget”上不存在属性“数据集”

Qwe*_*rty 9 dom-events typescript

单击后尝试访问按钮上的数据集时,出现此^错误。

linkProvider = (ev: React.SyntheticEvent<EventTarget>) => {
  console.debug('ev.target', ev.target.dataset['ix']) // error
}

// in render 
providers.map((provider, ix) => (
  <button key={provider} data-ix={ix} onClick={this.linkProvider}>{provider}</button>
))
Run Code Online (Sandbox Code Playgroud)

有什么想法使它起作用吗?

Efe*_*Efe 9

问题是在这里Elementdocumentwindow可以是EventTarget。您应该检测到EventTargetif是一个元素。因此,在您的情况下,以下代码应该可以工作

linkProvider = (ev: React.SyntheticEvent<EventTarget>) => {
  // If event target not an HTMLButtonElement, exit
  if (!(ev.target instanceof HTMLButtonElement)) {
    return;
  }
  console.debug('ev.target', ev.target.dataset['ix']) 
}
Run Code Online (Sandbox Code Playgroud)

简而言之

linkProvider = (ev: React.SyntheticEvent<HTMLButtonElement>) => {
  console.debug('ev.target', ev.currentTarget.dataset['ix']) 
}
Run Code Online (Sandbox Code Playgroud)

而且我在这里添加了示例

  • 您可以通过 `e.currentTarget.dataset.pageNumber` pageNumber 访问它,例如这里 (2认同)