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

React滑块组件中<img>标签onClick事件不生效问题求助

问题解决:React中<img>标签onClick事件无响应

嘿,这问题其实是个很常见的新手小失误!我一眼就瞅出来啦——你在给<img>绑定onClick的时候,没有真正调用你的函数。

问题出在哪?

你现在的代码是这样的:

<img onClick={() => anterior} src={ArrowLeft} ... />

这里的() => anterior只是返回了anterior函数的引用,但并没有执行它。相当于你告诉React“点击的时候给我这个函数”,而不是“点击的时候执行这个函数”,自然不会触发任何效果。

两种修正方案

你可以任选一种:

方案1:直接传递函数引用(推荐,更简洁)

不需要嵌套箭头函数,直接把函数本身传给onClick:

<img onClick={anterior} src={ArrowLeft} style={{'pointer-events': "all"}} alt="Before"/>
<img onClick={siguiente} src={ArrowRight} style={{'pointer-events': "all"}} alt="After"/>

方案2:在箭头函数里调用函数(加括号)

如果之后需要给函数传递参数,这种写法会更灵活:

<img onClick={() => anterior()} src={ArrowLeft} style={{'pointer-events': "all"}} alt="Before"/>
<img onClick={() => siguiente()} src={ArrowRight} style={{'pointer-events': "all"}} alt="After"/>

修正后的完整组件代码

const SliderInstructors = () => { 
  const siguiente = () => { 
    console.log('Siguiente'); 
    alert('You clicked me!'); 
  }; 
  const anterior = () => { 
    console.log('Anterior'); 
    alert('You clicked me!'); 
  }; 
  return( 
    <> 
      {/* Controles */} 
      <div className="controls"> 
        <img onClick={anterior} src={ArrowLeft} style={{'pointer-events': "all"}} alt="Before"/> 
        <img onClick={siguiente} src={ArrowRight} style={{'pointer-events': "all"}} alt="After"/> 
      </div> 
    </> 
  ) 
} 
export default SliderInstructors;

补充说明

你提到另一个组件的<img> onClick能正常工作,那大概率是那个组件里你用了上面两种正确写法中的一种,所以没出问题。刚学React的时候,函数调用的语法细节很容易搞混,多试几次就熟练啦!

内容的提问来源于stack exchange,提问作者NahualliArt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 05:24:05