useRef React Hook 和事件侦听器的问题并更改 img src

IT技术 reactjs react-hooks
2021-05-13 11:49:57

我正在尝试构建一个 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;
2个回答

有一个错字,事件的名称是mouseover,不是onmouseover

不需要,useEffect因为不需要手动设置事件侦听器处理程序,这已经由 React 处理了。

它应该是:

   <img
      ref={imageRef}
      src={primaryImg}
      onMouseOver={handleMouseOverHandler}
    />

不要将 null 传递给函数。它将删除当前对象的原型。而是这样做

const imageRef = useRef();