在子元素上反应onMouseEnter事件触发

问题描述 投票:0回答:1

我将onMouseEnter事件分配给父元素,但子元素是使用此事件触发的元素。当我在控制台上写e.target时,会打印出孩子。我该如何防止这种行为?

我已经尝试了e.stopPropagation(),并更新了反应。

import React, { Component } from 'react';

export default class Menu extends Component {
    menuElement_Click(e) {
        // trigger change
    }

    menuItem_MouseEnter(e) {
        console.log(e.target);
    }

    render() {
        return (
            <div className='menu-container'>
                <div className='menu-item'>
                    <div className='menu-label' to='/'
                        onClick={this.menuElement_Click.bind(this)}>
                        Home
                    </div>
                </div>
                <div className='menu-item' onMouseEnter={this.menuItem_MouseEnter.bind(this)}>
                    <div className='menu-label'>About</div>
                    <div className='sub-menu'>
                        <div className='sub-menu-item' to='/about#story'
                            onClick={this.menuElement_Click.bind(this)}>
                            Story
                        </div>
                        <div className='sub-menu-item' to='/about#more'
                            onClick={this.menuElement_Click.bind(this)}>
                            More
                        </div>
                    </div>
                </div>
            </div>
        )
    }
}

在控制台上打印

<div className='menu-label'>About</div>

但我需要它

<div className='menu-item'>...</div>
reactjs mouseevent mouseenter
1个回答
0
投票

使用event.currentTarget(在你的情况下e.currentTarget)。它始终引用已附加事件处理程序的元素。关于e.target:Event接口的target属性是对调度事件的对象的引用。


阅读更多关于:event.currentTargetevent.target

© www.soinside.com 2019 - 2024. All rights reserved.