Ben kabul cevap harika ama herkes için kullanabileceğiniz hissi gibi üzerine gelindiğinde arayan kim setTimeoutüzerine mouseoverve (setTimeout Saplı için diyelim diyelim liste kimlikleri) bir harita kolu kaydedin. Açık mouseoversetTimeout 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 onMouseOverve onMouseOutçünkü içindeki tüm çocuklar için de geçerli HTMLElement. Bu gerekli değilse onMouseEnterve onMouseLeavesırasıyla kullanabilirsiniz .