javascript - 嵌套元素中的 onClick 事件

标签 javascript reactjs

当我单击包含 AnimatedMouse 组件的 div 时,控制台中记录的事件是 AnimatedMouse 组件的元素之一,而不是 className 为“animated-mouse”本身的 div。

const AnimatedMouseScroll = () => {
    return (
        <div class="scroll-msg-container">
            <div class="scroll-msg-inner">
                <div class="scroll-msg-wheel">
                    click here
                </div>
            </div>
        </div>
    );
}

const EmployerService = () => {
    const scrollToNextSectionHandler = (event) => {
        console.log("clicked element", event.target)
    };

    return (
        <div className="animated-mouse" onClick={(e) => scrollToNextSectionHandler(e)}>
            <AnimatedMouseScroll />
        </div>
    );
}

ReactDOM.render(<EmployerService />, document.getElementById("root"));
<div id="root"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.10.2/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.10.2/umd/react-dom.production.min.js"></script>

最佳答案

target始终是被点击的最里面的目标元素。 (这在 DOM 中是正确的,而不仅仅是 React。)如果您想要放置事件处理程序的元素,请使用 currentTarget :

console.log("clicked element", event.currentTarget )
// −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−^

现场示例:

const AnimatedMouseScroll = () => {
 return (
       <div class="scroll-msg-container">
       <div class="scroll-msg-inner"  >
       <div class= "scroll-msg-wheel" >
       click here
       </div>
       </div>
       </div>
       );
}

const EmployerService = () => {
    const scrollToNextSectionHandler = (event) => {
   console.log("clicked element", event.currentTarget )
    };

  return (
      <div  className="animated-mouse"  onClick={(e) => scrollToNextSectionHandler(e)}>
    <AnimatedMouseScroll />
  </div>
       );
}

ReactDOM.render(<EmployerService/>, document.getElementById("root"));
<div id="root"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.10.2/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.10.2/umd/react-dom.production.min.js"></script>

关于javascript - 嵌套元素中的 onClick 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59818818/

相关文章:

javascript - React JSX 中的动态标签名称

reactjs - 如何在没有 Webpack 的情况下使用 Babel

javascript - Fancybox 中的 SVG

javascript - PIXI.RenderTexture 无渲染

javascript - 在重定向之前如何提醒用户

javascript - redux reducer 不重新渲染组件

javascript - 当路线状态发生变化时,Leaflet map 不会渲染图 block

javascript - 如何在 XSLT 中包含对 JavaScript 的调用?

reactjs - 模块构建失败: Duplicate Declaration "Editor"

reactjs - 如何使用 React 将焦点设置在动态添加的字段上