Bagaimana Anda bisa mencapai event hover atau event aktif di ReactJS saat Anda melakukan gaya inline?
Saya telah menemukan bahwa pendekatan onMouseEnter, onMouseLeave bermasalah, jadi berharap ada cara lain untuk melakukannya.
Khususnya, jika Anda mengarahkan mouse ke sebuah komponen dengan sangat cepat, hanya acara onMouseEnter yang terdaftar. OnMouseLeave tidak pernah aktif, sehingga tidak dapat memperbarui status ... membiarkan komponen tampak seolah-olah masih di-arahkan. Saya telah memperhatikan hal yang sama jika Anda mencoba dan meniru pseudo-class css ": active". Jika Anda mengklik sangat cepat, hanya acara onMouseDown yang akan mendaftar. Acara onMouseUp akan diabaikan ... membiarkan komponen tampak aktif.
Berikut adalah JSFiddle yang menunjukkan masalahnya: https://jsfiddle.net/y9swecyu/5/
Video JSFiddle dengan masalah: https://vid.me/ZJEO
Kode:
var Hover = React.createClass({
getInitialState: function() {
return {
hover: false
};
},
onMouseEnterHandler: function() {
this.setState({
hover: true
});
console.log('enter');
},
onMouseLeaveHandler: function() {
this.setState({
hover: false
});
console.log('leave');
},
render: function() {
var inner = normal;
if(this.state.hover) {
inner = hover;
}
return (
<div style={outer}>
<div style={inner}
onMouseEnter={this.onMouseEnterHandler}
onMouseLeave={this.onMouseLeaveHandler} >
{this.props.children}
</div>
</div>
);
}
});
var outer = {
height: '120px',
width: '200px',
margin: '100px',
backgroundColor: 'green',
cursor: 'pointer',
position: 'relative'
}
var normal = {
position: 'absolute',
top: 0,
bottom: 0,
left: 0,
right: 0,
backgroundColor: 'red',
opacity: 0
}
var hover = {
position: 'absolute',
top: 0,
bottom: 0,
left: 0,
right: 0,
backgroundColor: 'red',
opacity: 1
}
React.render(
<Hover></Hover>,
document.getElementById('container')
)