useRef React Hook 和事件侦听器的问题以及更改 img src
Problem with useRef React Hook and event listener and change img src
我正在尝试构建一个将在鼠标悬停事件上更改图像的 React Hook。我有下面的代码不起作用。我希望我可以添加一个事件监听器,然后当 onmouseever 事件触发时,更改图像 src 属性。这是不起作用的代码。
import React, { useState, useEffect, useRef } from "react";
const ImageToggler = ({ primaryImg, mouseOverImg }) => {
const imageRef = useRef(null);
function handleMouseOverHandler() {
console.log("handleMouseOver");
imageRef.current.src = mouseOverImg;
}
useEffect(() => {
// THIS DOES NOT SEEM TO DO ANYTHING
imageRef.current.addEventListener(
"onmouseover",
handleMouseOverHandler,
true
);
}, []);
return (
<img
ref={imageRef}
src={primaryImg}
onMouseOver={() => {
console.log("mouse over....");
}}
alt="image here"
/>
);
};
export default ImageToggler;
打错了,活动名称是mouseover
,不是onmouseover
。
不需要useEffect
因为不需要手动设置事件侦听器处理程序,这已经由 React 处理了。
应该是:
<img
ref={imageRef}
src={primaryImg}
onMouseOver={handleMouseOverHandler}
/>
不要将 null 传递给函数。它将删除当前对象的原型。而是这样做
const imageRef = useRef();
我正在尝试构建一个将在鼠标悬停事件上更改图像的 React Hook。我有下面的代码不起作用。我希望我可以添加一个事件监听器,然后当 onmouseever 事件触发时,更改图像 src 属性。这是不起作用的代码。
import React, { useState, useEffect, useRef } from "react";
const ImageToggler = ({ primaryImg, mouseOverImg }) => {
const imageRef = useRef(null);
function handleMouseOverHandler() {
console.log("handleMouseOver");
imageRef.current.src = mouseOverImg;
}
useEffect(() => {
// THIS DOES NOT SEEM TO DO ANYTHING
imageRef.current.addEventListener(
"onmouseover",
handleMouseOverHandler,
true
);
}, []);
return (
<img
ref={imageRef}
src={primaryImg}
onMouseOver={() => {
console.log("mouse over....");
}}
alt="image here"
/>
);
};
export default ImageToggler;
打错了,活动名称是mouseover
,不是onmouseover
。
不需要useEffect
因为不需要手动设置事件侦听器处理程序,这已经由 React 处理了。
应该是:
<img
ref={imageRef}
src={primaryImg}
onMouseOver={handleMouseOverHandler}
/>
不要将 null 传递给函数。它将删除当前对象的原型。而是这样做
const imageRef = useRef();