我正在尝试使用JSX事件监听策略,如下所述:https://stenciljs.com/docs/events#using-events-in-jsx
但是,当我在JSX中设置我的事件监听器时,我收到以下错误:
Type '{ ref: (el: HTMLElement) => ISubflow; onButtonStateChange:
(ev: CustomEvent<ButtonState>) => void; }' is not assignable to type
'MyComponentAttributes'. Property 'onButtonStateChange' does
not exist on type 'MyComponentAttributes'.
MyComponent具有此事件定义:
@Event() onButtonStateChange: EventEmitter<ButtonState>;
而JSX看起来像这样:
<my-component
ref={(el)=> this.currentSubflow = (el as unknown) as ISubflow}
onButtonStateChange={(ev:CustomEvent<ButtonState>) => this.onButtonStateChanged(ev)} />
哦,伙计,这是一个偷偷摸摸的〜!
JSX事件遵循命名约定!我所要做的就是改变
@Event() onButtonStateChange: EventEmitter<ButtonState>;
至
@Event() buttonStateChange: EventEmitter<ButtonState>;
并且Sencil / JSX的东西预先将on
带到活动中去听!