You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在React中添加鼠标移动事件动态修改图片透明度的问题求助

代码问题修复说明

现有代码存在3处核心功能错误:

  • 监听的事件名称错误:鼠标移动触发的原生事件名为mousemove,而非不存在的nativeEvent
  • 鼠标坐标获取方式错误:window对象不存在clientX属性,需要从mousemove事件的回调参数中读取坐标值
  • useEffect使用不规范:缺少依赖数组和事件解绑逻辑,会导致事件重复绑定、组件卸载后内存泄漏

修复后完整代码

import React, { useEffect, useState }  from "react";
import "./style.css";

function Imaging() {
  const [testOpacity, setOpacity] = useState(1)

  const listenMoveEvent = (e) => {
    e.clientX > 100
     ? setOpacity(0.2)
     : setOpacity(1)
  }

  useEffect(() => {
    window.addEventListener("mousemove", listenMoveEvent);
    // 组件卸载时移除事件监听,避免内存泄漏
    return () => {
      window.removeEventListener("mousemove", listenMoveEvent);
    }
  }, []) // 空依赖数组保证事件只在组件挂载时绑定一次

  return (
    <>
      <img 
        id="xOpacityImage" 
        style={{opacity: testOpacity}}
        src={require('../../assets/img/Sidewalk.png').default}
        alt={"xOpacityImage"}
      />
    </>
  );
}
export default Imaging;

内容的提问来源于stack exchange,提问作者Mr. Dawit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 05:09:03