【发布时间】:2019-04-17 11:58:53
【问题描述】:
我目前正在为一个学校项目开发一个约会网站,但我被困住了,不确定我是否走在正确的道路上。
在用户个人资料上,我想要用户选择显示的照片列表,并且我想要将鼠标悬停在指针所在的照片上。
在我的状态下,我添加了一个 listPhotoHover: [ ],这是一个包含变量 true 或 false 的选项卡。 listPhotoHover[0] = true 表示列表的第一张照片有悬停,false 表示没有悬停。
我使用 onMouseEnter( ) 为每张照片映射并添加一个 div,它获取照片索引并在触发时将其设置为悬停。
如果 listPhotoHover[index] 存在,则悬停出现,悬停 div 有一个 onMouseLeave( ) 获取照片索引并将照片的悬停设置为 false。
一切似乎都正常,但我不确定这是否是最好的方法,当我在每张照片上快速移动时,悬停仍然在那里,我认为 onMouseLeave() 不运行。
这是我的代码
每张照片的地图:
photos.map((photo, index) => {
return
<div className={`flex row`} key={index} >
<img
className={classes.userPhotos}
src={photo}
alt={`photo de ${name}`}
onMouseEnter={() => { this.haveHover(index) }}
/>
{
listPhotoHover[index]
? <div
className={`
absolute flex center alignCenter
${classes.userPhotos} ${classes.photoHover}
`}
onMouseLeave={
() => { this.removeHover(index) }
}
/>
: null
}
</div>
})
触发 onMouseEnter() 或 onMouseLeave() 时的函数:
haveHover (index, value) {
const tab = this.state.listPhotoHover
tab[index] = value
this.setState({listPhotoHover: tab})
}
我想知道为什么当我的指针移动非常快时 onMouseLeave() 不起作用,以及在地图上悬停的最佳方法是什么。 感谢您的建议,如果我写的英文不正确,请见谅
ps:我检查了以前的问题,但还没有找到任何答案:(
约瑟芬
【问题讨论】: