如何在 reactJS 中控制当前图像的日志索引
How to console log Index of current image in reactJS
我有以下代码。
function SolutionsSectionBoxItem({
heading, //this information I am getting from backend in parent component and passing here
image, //this information I am getting from backend in parent component and passing here
description, //this information I am getting from backend in parent component and passing here
solutionLink, //this information I am getting from backend in parent component and passing here
}) {
const [bgImgIndex, setBgImgIndex] = useState(0);
function handleEvent() {
// ?????
}
return (
<div
className={styles["solutions-section-item-box"]}
onMouseOver={handleEvent()}
>
<Link to={solutionLink}>
<div className={styles["solutions-section-item-title"]}>{heading}</div>
<img
src={image}
alt={description}
className={styles["solutions-section-item-img"]}
/>
</Link>
</div>
);
}
export default SolutionsSectionBoxItem;
现在我的问题是,当悬停其中一张图像时,我应该如何获取当前图像索引并设置在我的状态和警报或控制台日志中。我尝试类似的东西:
function handleEvent() {
console.log(setBgImgIndex(bgImgIndex.indexOf(image)));
}
但它不起作用,请帮我解决这个问题,抱歉我不能在 codesandbox 或其他代码编辑器中给出这段代码的示例。
您可以尝试在您的函数中传递节点元素目标,但正如 Drew Reese 所说,当您编写 onMouseOver={handleEvent()}
时,它会在安装组件时直接调用您的函数。
这是获取一些信息的方法:
function handleEvent(e) {
console.log(e.taget.WHATYOUWANT)
}
return (
<div
className={styles["solutions-section-item-box"]}
onMouseOver={(e) => handleEvent(e)}
>
<Link to={solutionLink}>
<div className={styles["solutions-section-item-title"]}>{heading}</div>
<img
src={image}
alt={description}
className={styles["solutions-section-item-img"]}
/>
</Link>
</div>
);
我假设您的组件是父级调用的地图函数的 return,您只想在鼠标悬停时添加样式,这样您就可以这样做:
const [isOnMouseOver, setIsOnMouseOver] = useState(false);
return (
<div
className={styles["solutions-section-item-box"] isOnMouseOver && styles['Your class']}
onMouseOver={() => setIsOnMouseOver(true)}
onMouseOut={() => setIsOnMouseOver(false)}
>
<Link to={solutionLink}>
<div className={styles["solutions-section-item-title"]}>{heading}</div>
<img
src={image}
alt={description}
className={styles["solutions-section-item-img"]}
/>
</Link>
</div>
);
我有以下代码。
function SolutionsSectionBoxItem({
heading, //this information I am getting from backend in parent component and passing here
image, //this information I am getting from backend in parent component and passing here
description, //this information I am getting from backend in parent component and passing here
solutionLink, //this information I am getting from backend in parent component and passing here
}) {
const [bgImgIndex, setBgImgIndex] = useState(0);
function handleEvent() {
// ?????
}
return (
<div
className={styles["solutions-section-item-box"]}
onMouseOver={handleEvent()}
>
<Link to={solutionLink}>
<div className={styles["solutions-section-item-title"]}>{heading}</div>
<img
src={image}
alt={description}
className={styles["solutions-section-item-img"]}
/>
</Link>
</div>
);
}
export default SolutionsSectionBoxItem;
现在我的问题是,当悬停其中一张图像时,我应该如何获取当前图像索引并设置在我的状态和警报或控制台日志中。我尝试类似的东西:
function handleEvent() {
console.log(setBgImgIndex(bgImgIndex.indexOf(image)));
}
但它不起作用,请帮我解决这个问题,抱歉我不能在 codesandbox 或其他代码编辑器中给出这段代码的示例。
您可以尝试在您的函数中传递节点元素目标,但正如 Drew Reese 所说,当您编写 onMouseOver={handleEvent()}
时,它会在安装组件时直接调用您的函数。
这是获取一些信息的方法:
function handleEvent(e) {
console.log(e.taget.WHATYOUWANT)
}
return (
<div
className={styles["solutions-section-item-box"]}
onMouseOver={(e) => handleEvent(e)}
>
<Link to={solutionLink}>
<div className={styles["solutions-section-item-title"]}>{heading}</div>
<img
src={image}
alt={description}
className={styles["solutions-section-item-img"]}
/>
</Link>
</div>
);
我假设您的组件是父级调用的地图函数的 return,您只想在鼠标悬停时添加样式,这样您就可以这样做:
const [isOnMouseOver, setIsOnMouseOver] = useState(false);
return (
<div
className={styles["solutions-section-item-box"] isOnMouseOver && styles['Your class']}
onMouseOver={() => setIsOnMouseOver(true)}
onMouseOut={() => setIsOnMouseOver(false)}
>
<Link to={solutionLink}>
<div className={styles["solutions-section-item-title"]}>{heading}</div>
<img
src={image}
alt={description}
className={styles["solutions-section-item-img"]}
/>
</Link>
</div>
);