反应 onMouseOver 不触发

React onMouseOver doesn't fire

我想在鼠标移到 div 上时触发一个事件。
我正在使用 React 作为我的前端框架,并遵循他们的 docs,事件不会触发。

<div onMouseOver={console.log('onMouseOver')} onMouseOut={console.log('onMouseOut')} className="hidden-xs text-center">
      {productImage}
      {productContent}
</div>

加载页面时,我在控制台中看到 onMouseOver 和 onMouseOut 的日志输出,但是当我将鼠标移到该元素上时 (div),没有任何其他内容被写入。

您应该分配方法的引用而不是在事件寄存器中调用它们。试试这个:

handleOnMouseOver: function(e){
  console.log("onMouseOver");
}
....
<div onMouseOver={this.handleOnMouseOver} ..../> // NOTE : don't put () at the end

为了扩展 Phil 的回答——无论您放在大括号 {} 中的什么,都会在安装组件时进行评估。如果你把

onMouseOver={console.log("onMouseOver")}

然后在挂载组件时,React 通过执行 console.log() which returns undefined 来评估表达式,因此处理程序设置为 undefined.

如果你把

onMouseOver={this.handleOnMouseOver}

表达式的计算结果是对处理程序的引用,所以你得到了你想要的。您也可以使用

onMouseOver={() => console.log("mouseOver")}