这是我的代码:
<Button
disabled={filter === 'Active'}
size='md'
color='primary'
name='Active' // complete = false
onClick={this.handleFilterClick}
>
Active
</Button>
在我的函数处理程序上,我在事件上出错:
handleFilterClick = (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
// continue here
const { name } = e.target;
它说:
Property 'name' does not exist on type 'EventTarget'.
我也尝试过:
(e: React.MouseEvent<HTMLInputElement, MouseEvent> & React.MouseEvent<HTMLButtonElement, MouseEvent>)
按钮的事件类型是什么?在JavaScript中,这种方法可以接受名称,但是我不知道为什么不输入打字稿?
event.target
是从中调度元素的元素,不一定必须HTMLButtonElement
在事件中进行定义。
但是,如果使用event.currentTarget
,您将看到此错误消失了:
const { name } = event.currentTarget;
如果必须使用event.target
自身,则必须强制转换对象:
const { name } = event.target as HTMLButtonElement;
从打字:
/**
* currentTarget - a reference to the element on which the event listener is registered.
*
* target - a reference to the element from which the event was originally dispatched.
* This might be a child element to the element on which the event listener is registered.
* If you thought this should be `EventTarget & T`, see https://github.com/DefinitelyTyped/DefinitelyTyped/pull/12239
*/
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句