【发布时间】:2023-02-24 09:50:35
【问题描述】:
我有一个带有 OnMouseEnter() 的 div 元素更改其类和一个 OnMouseLeave() 恢复其类,onMouseLeave() 仅在鼠标指针离开元素的父 div 后才有效。
更多细节 - 基本上我有一个父 div(称为画布),里面有子 div(单元格)来表示一个矩阵,子 div 在鼠标进入时改变颜色并在鼠标离开时恢复到原始颜色,问题是单元格改变颜色鼠标进入但仅在指针离开其父 div 时恢复颜色。
const [canvas, setcanvas] = useState([[]]);
const handleenter1 = (row, col) => {
const a = []
for (var i = 0; i<50; i++){
a.push([]);
for (var j=0; j<20; j++){
if (i=== row && j === col){
var obj = {x: i, y: j, status: "wall"};
a[i].push(obj);
}
else {
obj = canvas[i][j];
a[i].push(obj);
}
}
}
setcanvas(a);
}
const handleleave1 = (row, col ) => {}
const create = () => {
let a = [];
for (var i = 0; i<50; i++){
a.push([]);
for (var j=0; j<20; j++){
if (i === 10 && j === 10){
var obj = {x: i, y: j, status: "starter"};
a[i].push(obj);
}
else {
obj = {x: i, y: j, status: "space"};
a[i].push(obj);
}
}
}
setcanvas(a);
}
useEffect(create, []);
const m = canvas.map((objlist,index1)=> {
return (objlist.map((obj,index) => {
return (
<div key = {`${index1} ${index}`}
onMouseEnter ={()=> {handleenter1(obj.x,obj.y)}}
onMouseLeave = {()=> { handleleave1(obj.x ,obj.y) }}>
</div>);
}));
});
【问题讨论】:
标签: reactjs mouseevent