2017-10-13 3 views
0

反応の中のハンドラーmouseenter/mouseleaveを書きました。私の驚いたことにe.targetは子要素を返します。なぜmouseenter/mouseleaveに浸漬作業していますか?

jsにexampleを作成し、すべてが完全に機能します。親でのみ有効です。 このハンドラは子要素で動作しなければならず、泡立っていません。その理由は何ですか?

コンポーネントコードthe react docsから

codepen

class MovieItem extends Component { 
 
    constructor(props) { 
 
    super(props); 
 
    this.state = { 
 
     popup: false 
 
    }; 
 
    } 
 

 
    outItem = (e) => { 
 
    e.stopPropagation() 
 
    console.log(e.target) 
 

 
    e.target.style.opacity = 0 
 
    // this.setState({ 
 
    //  popup: true 
 
    // }); 
 

 
    }; 
 

 
    leaveItem = (e) => { 
 
    e.stopPropagation() 
 
    console.log(e.target) 
 
    e.target.style.opacity = 1 
 
    this.setState({ 
 
     popup: false 
 
    }); 
 

 
    }; 
 

 

 
    render() { 
 
    return (< 
 
     div className = "movie-item" 
 
     id = { 
 
     this.props.id 
 
     } 
 
     onMouseEnter = { 
 
     (e) => this.outItem(e) 
 
     } 
 
     onMouseLeave = { 
 
     (e) => this.leaveItem(e) 
 
     } > 
 

 
     < 
 
     div className = "movie-item__data" > 
 

 
     < 
 
     div className = "movie-item__poster" > 
 
     < 
 
     img src = "http://lorempixel.com/140/205/" 
 
     alt = ""/> 
 
     < 
 
     /div> < 
 
     div className = "movie-item__title" > title < /div> 
 

 
     < 
 
     /div> < 
 
     /div> 
 
    ); 
 
    }

答えて

1

onMouseEnteronMouseLeaveイベントがある要素から伝播通常のバブリングの代わりに入力されたものに残され、キャプチャフェーズはありません。

+0

ありがとう、あなたはその停止方法を知っていますか? – Drop

関連する問題