我的目标是创建一个无状态图像按钮组件,当我将鼠标悬停在该按钮组件上时会更改图像,以后可以在其他地方使用。
我当前的问题是调用onMouseOver事件时无法设置“悬停”图像。图片未显示,看起来像这样:
// Assets
import image from '../assets/normal.png';
import imageSelected from '../assets/selected.png';
const HoverImage = () => {
function over(e) {
e.currentTarget.src = { imageSelected };
}
function out(e) {
e.currentTarget.src = { image };
}
return <img src={image} onMouseOver={over} onMouseOut={out} />;
};
export default HoverImage;
当我没有将鼠标悬停在组件上时,图像会正确显示。我在做错什么或如何改进代码以实现目标?
我也不想要在CSS中硬编码图像的路径。最好的办法是通过我猜想的道具来设置图像。
答案 0 :(得分:3)
只需删除{}
和imageSelected
周围的image
,实际上在对象周围插入{}
就是传递对象,而不是图像。
import image from '../assets/normal.png';
import imageSelected from '../assets/selected.png';
const HoverImage = () => {
function over(e) {
e.currentTarget.src = imageSelected ;
}
function out(e) {
e.currentTarget.src = image ;
}
return <img src={image} onMouseOver={over} onMouseOut={out} />;
};
export default HoverImage;
对于第二个问题,您可以将图像作为道具传递并像这样显示:
const HoverImage = props => {
function over(e) {
e.currentTarget.src = props.hoverImage;
}
function out(e) {
e.currentTarget.src = props.normalImage;
}
return <img src={props.normalImage} onMouseOver={over} onMouseOut={out} />;
};
您可以检查此Sandboox以获得更多信息;