Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 熱海
- JenkinsFile
- typescript
- vba
- codebuild
- 釜つる
- duckdb
- 방콕
- react.js
- PostgreSQL
- 미츠이 스미토모
- 메르페이
- documentdb
- 태국
- node.js
- 체코
- CSV
- pyenv
- 三井住友カード
- 프라하
- 뮌헨
- Selenium
- 카마츠루
- 페이페이
- 아타미
- Python
- javascript
- local
- PayPay
- terraform
Archives
- Today
- Total
도쿄사는 외노자
javascript mouse in-out event 비교 본문
MaterialUI의 Drawer를 이용해 sideNavigation을 만드는 중이었다.
drawer자체에 onMouseLeave를 발라도 전혀 적용이 되지 않기에,
일단 render를 해 두고, 나중에 따로 class로 element를 찾아서 이벤트를 바르기로 했다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | render() { const styles = this.getStyles(this.props, this.context); return ( <div> <FloatingActionButton style={styles.trigger} onMouseEnter={this.openNavi} > <i className="fa fa-plus fa-lg" aria-hidden="true" /> </FloatingActionButton> <Drawer className="naviDrawer" open={this.state.open} openSecondary={styles.openSecondary} containerStyle={styles.root} > <MenuItem style={styles.item} onClick={this.setFocus} >Menu Item</MenuItem> <MenuItem style={styles.item} onClick={this.setFocus} >Menu Item 2</MenuItem> </Drawer> </div> ); } | cs |
대충 이래 render를 준비해 두고
1 2 3 4 | componentDidMount() { const drawer = document.getElementsByClassName('naviDrawer')[0]; drawer.addEventListener('mouseout', this.closeNavi); } | cs |
이렇게 Drawer에 이벤트리스터를 발라 두었다.
1 2 3 4 5 | closeNavi = () => { this.setState({ open: false, }); } | cs |
원래대로라면 drawer의 div를 벗어날 경우 이벤트가 발생해야 하는데,
drawer div내의 자식 엘리먼트간 이동을 하는데도 closeNavi가 작동하더라.
뭔가 싶어서 알아보았더니...
1. 자식 요소에도 개별적으로 영향
mouseover, mouseout
2. 자식 요소에는 영향 없음
mouseenter, mouseleave
즉, 내가 원하는대로 하려면
componentDidMount에서 이벤트리스너를 바를 때,
mouseout대신 mouseleave를 발라야하더라.
1 2 3 4 | componentDidMount() { const drawer = document.getElementsByClassName('naviDrawer')[0]; drawer.addEventListener('mouseleave', this.closeNavi); } | cs |
'Tech > JavaScript' 카테고리의 다른 글
node.js Tool에서 Teams와 txt로 로그 남기기 (0) | 2019.12.04 |
---|---|
2018년 현재의 JavaScript 작법(Link only) (0) | 2017.12.27 |
Object의 key 확인하기 (0) | 2017.01.26 |
input value에서 자연수 확인하기 (0) | 2016.09.06 |
jQuery에서 clear()가 안먹힐 경우 (0) | 2016.08.12 |