Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Regular expression
- JavaScript
- regex
- Node
- MySQL
- java
- Webpack
- spring cloud
- Spring Batch
- Effective Java
- Effective Java 3/e
- npm
- nodejs
- 퀵소트
- REACTJS
- mysql 5.5
- log4j2
- eslint
- update
- current_date
- git
- migration
- Chunk
- REACT
- upgrade
- Express
- log_bin
- expire_logs_days
- 정규표현식
- spring
Archives
- Today
- Total
내 세상
[React] React-Select 메뉴 클릭 시, 드롭다운 메뉴 뒤 클릭 이슈 본문
728x90
반응형
react-select를 사용해서 Select를 구현할 때, 드롭다운 메뉴 클릭 시 뒤에 있는 다른 부분이 선택되는 이슈
아래 예시는 Select 드롭다운 메뉴 뒤에 CheckBox가 있어서 드롭다운 메뉴 중 하나 선택 시, 뒤쪽 CheckBox가 선택되는 이슈임.
1. menuPortalTarget 설정 (react-select 전용)
react-select에서는 드롭다운 메뉴가 별도의 포탈로 렌더링되기 때문에 menuPortalTarget 속성을 document.body로 설정하면 문제를 해결할 수 있습니다.
<Select
value={this.state.temp1}
options={this.state.temp1List}
onChange={e => this.setState({ temp1: e })}
menuPortalTarget={document.body} // 포탈을 body에 렌더링
styles={{
menuPortal: base => ({ ...base, zIndex: 9999 }), // z-index 설정
}}
/>
이렇게 하면 드롭다운 메뉴가 항상 최상단에 렌더링되어 뒤에 있는 CheckBox와의 충돌을 방지할 수 있습니다.
AS-IS
<div>
<div>
<Select
value={this.state.temp1}
options={this.state.temp1List}
onChange={e =>
this.setState({ temp1: e })
}
/>
</div>
<div>
<FormLabel>Status</FormLabel>
<FormGroup row>
<FormControlLabel
control={
<CheckBox
checked={this.state.test1}
onChange={this.handleChkBox("Test1")}
color="primary"
/>
}
label={consts.BABO}
/>
</FormGroup>
</div>
</div>
TO-BE
<div>
<div>
<Select
value={this.state.temp1}
options={this.state.temp1List}
onChange={e =>
this.setState({ temp1: e })
}
menuPortalTarget={document.body} // 포탈을 body에 렌더링
styles={{
menuPortal: base => ({ ...base, zIndex: 9999 }), // z-index 설정
}}
/>
</div>
<div>
<FormLabel>Status</FormLabel>
<FormGroup row>
<FormControlLabel
control={
<CheckBox
checked={this.state.test1}
onChange={this.handleChkBox("Test1")}
color="primary"
/>
}
label={consts.BABO}
/>
</FormGroup>
</div>
</div>
728x90
반응형
'Technical > React' 카테고리의 다른 글
[React] React-leaflet rectangle gradient 적용 방법 (0) | 2025.01.09 |
---|---|
[webpack] webpack-dev-server config 설정 (esbuild-loader, babel-loader) (0) | 2024.12.06 |
[React] node-sass error (0) | 2023.01.04 |
[React] MUI ClickAwayListener (0) | 2022.12.23 |
[React] Copy to Clipboard (0) | 2022.11.29 |