Ben kabul cevap harika ama herkes için kullanabileceğiniz hissi gibi üzerine gelindiğinde arayan kim setTimeout
üzerine mouseover
ve (setTimeout Saplı için diyelim diyelim liste kimlikleri) bir harita kolu kaydedin. Açık mouseover
setTimeout gelen kolu temizlemek ve haritadan silin
onMouseOver={() => this.onMouseOver(someId)}
onMouseOut={() => this.onMouseOut(someId)
Ve haritayı aşağıdaki gibi uygulayın:
onMouseOver(listId: string) {
this.setState({
...
});
const handle = setTimeout(() => {
scrollPreviewToComponentId(listId);
}, 1000);
this.hoverHandleMap[listId] = handle;
}
onMouseOut(listId: string) {
this.setState({
...
});
const handle = this.hoverHandleMap[listId];
clearTimeout(handle);
delete this.hoverHandleMap[listId];
}
Ve harita da öyle
hoverHandleMap: { [listId: string]: NodeJS.Timeout } = {};
Tercih ediyorum onMouseOver
ve onMouseOut
çünkü içindeki tüm çocuklar için de geçerli HTMLElement
. Bu gerekli değilse onMouseEnter
ve onMouseLeave
sırasıyla kullanabilirsiniz .