gpt4 book ai didi

reactjs - 对 mousedown 和 touchstart 事件的 React TypeScript 类型”

转载 作者:行者123 更新时间:2023-12-05 03:52:02 28 4
gpt4 key购买 nike

如何为 mousedowntouchstart 事件指定 TypeScript 类型?

function useOnClickOutside(ref: React.RefObject<any>, handler: () => void) {
React.useEffect(() => {
const listener = (event: React.TouchEvent | React.MouseEvent) => {
if (!ref || !ref.current) {
return;
}
const elem = document.getElementsByClassName(uniqueClassName)[0];
if (elem.contains(event.target)) {
return;
}
handler();
};

document.addEventListener("mousedown", listener);
document.addEventListener("touchstart", listener);

return () => {
document.removeEventListener("mousedown", listener);
document.removeEventListener("touchstart", listener);
};
}, [ref, handler]);
}

最佳答案

您使用的是 DOM 原生事件,不是 React SyntheticEvent .

所以类型应该是 DOM MouseEventTouchEvent接口(interface)。

例如

function useOnClickOutside(ref: React.RefObject<any>, handler: () => void) {
React.useEffect(() => {
const listener = (event: TouchEvent | MouseEvent) => {
if (!ref || !ref.current) {
return;
}
const uniqueClassName = 'test';
const elem = document.getElementsByClassName(uniqueClassName)[0];
if (elem.contains(event.target as Node)) {
return;
}
handler();
};

document.addEventListener('mousedown', listener);
document.addEventListener('touchstart', listener);

return () => {
document.removeEventListener('mousedown', listener);
document.removeEventListener('touchstart', listener);
};
}, [ref, handler]);
}

TypeScript 版本:"typescript": "^4.1.2"

关于reactjs - 对 mousedown 和 touchstart 事件的 React TypeScript 类型”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62454630/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com