Làm cách nào bạn có thể đạt được sự kiện di chuột hoặc sự kiện đang hoạt động trong ReactJS khi bạn tạo kiểu nội tuyến?
Tôi nhận thấy rằng phương pháp onMouseEnter, onMouseLeave còn nhiều lỗi, vì vậy hy vọng có một cách khác để thực hiện.
Cụ thể, nếu bạn di chuột qua một thành phần rất nhanh, chỉ sự kiện onMouseEnter được đăng ký. OnMouseLeave không bao giờ kích hoạt, và do đó không thể cập nhật trạng thái ... để lại thành phần xuất hiện như thể nó vẫn đang được di chuột qua. Tôi đã nhận thấy điều tương tự nếu bạn thử và bắt chước lớp giả css ": active". Nếu bạn nhấp thực sự nhanh, chỉ sự kiện onMouseDown sẽ đăng ký. Sự kiện onMouseUp sẽ bị bỏ qua ... để lại thành phần hoạt động.
Đây là JSFiddle hiển thị sự cố: https://jsfiddle.net/y9swecyu/5/
Video về JSFiddle gặp sự cố: https://vid.me/ZJEO
Mật mã:
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')
)