【发布时间】:2022-12-24 00:20:38
【问题描述】:
我正在使用下面的 clickOutside 动作。
export function clickOutside(node: HTMLElement) {
function detect({ target }: MouseEvent) {
if (!node.contains(target as Node)) {
node.dispatchEvent(new CustomEvent('clickoutside'));
}
}
document.addEventListener('click', detect, { passive: true, capture: true });
return {
destroy() {
document.removeEventListener('click', detect);
},
};
当我将鼠标悬停在 on:clickoutside={() => {}} 上时,这是我仍然遇到的错误
Type '{ onclickoutside: () => void; class: string; }' is not assignable to type 'HTMLProps<HTMLDivElement>'.
Property 'onclickoutside' does not exist on type 'HTMLProps<HTMLDivElement>'}
我在 svelte kit app.d.ts 中试过这个
declare namespace svelte.JSX {
interface HTMLAttributes<T> {
clickoutside?: (event: CustomEvent) => void;
}
}
我也尝试了HTMLProps<T>和HTMLProps<HTMLDivElement>以及许多其他变体,但没有任何效果。我重新启动了 ts 服务器 25 次,所以不是这样。
这是docs的链接
不,这不是重复的,因为我从字面上浏览了所有其他答案,但它们不起作用。像这样:example
【问题讨论】:
标签: typescript svelte sveltekit