Satır içi şekillendirme yaparken ReactJS'de bir hover olayı veya aktif olayı nasıl elde edebilirsiniz?
OnMouseEnter, onMouseLeave yaklaşımının hatalı olduğunu buldum, bu yüzden bunu yapmanın başka bir yolu olduğunu umuyorum.
Özellikle, fareyi bir bileşenin üzerine çok hızlı bir şekilde getirirseniz, yalnızca onMouseEnter olayı kaydedilir. OnMouseLeave hiçbir zaman ateşlemez ve bu nedenle durumu güncelleyemez ... bileşeni, sanki hala üzerindeymiş gibi görünmesi için bırakır. ": Active" css sözde sınıfını denerseniz ve taklit ederseniz, aynı şeyi fark ettim. Gerçekten hızlı tıklarsanız, yalnızca onMouseDown etkinliği kaydedilecektir. OnMouseUp olayı yok sayılacaktır ... bileşen etkin görünecek şekilde bırakılacaktır.
İşte sorunu gösteren bir JSFiddle: https://jsfiddle.net/y9swecyu/5/
JSFiddle'ın sorunlu videosu: https://vid.me/ZJEO
Kod:
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')
)