인라인 스타일링을 할 때 ReactJS에서 hover 이벤트 또는 활성 이벤트를 어떻게 얻을 수 있습니까?
나는 onMouseEnter, onMouseLeave 접근 방식이 버그가 있음을 알았으므로 다른 방법이 있기를 바랍니다.
특히 구성 요소 위로 마우스를 빠르게 가져 가면 onMouseEnter 이벤트 만 등록됩니다. onMouseLeave는 실행되지 않으므로 상태를 업데이트 할 수 없습니다. ": active"css 가상 클래스를 모방하려고하면 똑같은 것을 알아 차 렸습니다. 정말 빠르게 클릭하면 onMouseDown 이벤트 만 등록됩니다. onMouseUp 이벤트는 무시됩니다 ... 구성 요소는 활성 상태로 유지됩니다.
다음은 문제를 보여주는 JSFiddle입니다 : https://jsfiddle.net/y9swecyu/5/
문제가있는 JSFiddle 비디오 : https://vid.me/ZJEO
코드:
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')
)