Skip to content

In React 16, onMouseEnter is triggered an extra time when entering a new child #10906

Closed
@Sherryer

Description

@Sherryer

版本(versions):
react@16.0.0
react-dom@16.0.0

描述(description):
给父级别绑定 onMouseEnter 事件。在首次渲染后,鼠标移入新渲染进去的子元素会触发父元素的 onMouseEnter 事件。

示例(demo):

import React, {Component} from 'react';

class Demo extends Component {
    constructor(prop) {
        super(prop);
        this.enter = this.enter.bind(this)
        this.state = {
            flag: false
        }
    }
    enter(event) {
        console.log(event.nativeEvent);
        console.log("enter")
    }
    click() {
        this.setState({flag:!this.state.flag})
    }
    render() {
        let old = {
            height: "100px",
            width: "100px",
            border: "1px solid #6dbbff"
        };
        let aa = {
            height: "100px",
            width: "100px",
            border: "1px solid red"
        };
        let content = {
            border: "1px solid black",
            display: "flex",
            padding:"10px"
        }
        return(
            <div>
                <div style={content} onMouseEnter={this.enter}>
                    {this.state.a}
                    <div style={old}>old</div>
                    <div style={aa}>old</div>
                    {this.state.flag && <div style={aa}>new</div>}
                </div>
                <button onClick={this.click.bind(this)}>点我(click me)</button>
            </div>
        )
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions