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
- 이벤트 루프
- nodejs
- 백준
- 자바스크립트
- 알고리즘
- OSI 7계층
- 코딩테스트
- MUI
- 백준 nodeJS
- 버블정렬
- JavaScript Deep Dive
- kakao map api
- 배열
- react js
- javascript
- 자료구조
- next/Image
- 정규표현식
- 코드스테이츠
- 프론트엔드
- 유데미
- 코드스테이츠 메인프로젝트
- 페이지네이션
- sort
- CSS
- Node js
- 재귀함수
- primitive type
- Native select
- input class
Archives
- Today
- Total
신입 개발자에서 시니어 개발자가 되기까지
MUI Select 공통 컴포넌트 만들기 본문
이번 작업은 select 컴포넌트를 모바일에서만 native select로 렌더링 하고, 웹에서는 기존대로 MUI Select 컴포넌트를 보여주도록 하는 작업이었다. 기존에 만들어둔 select도 하나씩 바꿀 예정.
Native Select란?
nativeSelect는 안드로이드, ios 등 각 운영체제에서 정한 style에 맞게 select 컴포넌트를 렌더링 해주는 컴포넌트다. 그래서 실제로 native select를 사용하면 안드로이드와 ios에서 렌더링 되는 컴포넌트의 스타일이 다르다. 같은 컴포넌트가 모바일에서는 다음과 같이 운영체제에 맞게 다르게 보인다.
ios
android
컴포넌트
const NativeSelect = ({
mobileEnvironment,
options,
...props
}: NativeSelectProps) => {
return (
<MUISelect {...props}>
{options.map(option => {
if (mobileEnvironment) {
return (
<option
key={option.key}
value={option.value}
className="s-select-listItem"
>
{option.label}
</option>
);
}
return (
<MUIMenuItem
key={option.key}
value={option.value}
className="s-select-listItem"
>
{option.label}
</MUIMenuItem>
);
})}
</MUISelect>
);
};
export default NativeSelect;
NativeSelect를 렌더링하는 곳에서 native={mobileEnvironment} 속성을 줘서 모바일일 경우 native=true가 되도록 했다. 원래는 select 아래에 들어갈 children 컴포넌트도 분리했다가 지금은 select 자식 컴포넌트에 들어갈 값을 배열 구조로 props로 받아서 사용하는 방법을 사용했다. 분리했을 때 여러 버그가 발생했기 때문. 몇가지는 수정했는데 다 수정되지는 않아서 사수 분께서 추천해준 방법으로 컴포넌트를 만들었다.
참고 : props를 하나씩 받지 않고 구조분해할당으로 받기 때문에 type은 extends SelectProps로 상속받아야 한다.
'javascript > React Js' 카테고리의 다른 글
debounce 함수 실무에서 적용해보기 (0) | 2023.08.15 |
---|---|
React Virtual DOM(feat. 브라우저 렌더링 프로세스) (0) | 2022.11.17 |
[sideProject] useForm으로 에러 핸들링하기. (2) | 2022.11.08 |
react-hook-form으로 폼 데이터 받기(feat. layout컴포넌트, styled-components) (0) | 2022.11.03 |
[Redux] dispatch는 action을 reducer 어떻게 전달하는가? (2) | 2022.11.03 |