환율 계산기
프리온보딩 구현 과제
API를 통해 환율값을 받아 와, 실시간 환율 계산을 할 수 있도록 하는 계산기를 구현해봤다.
배포 주소
http://beefplz.s3-website.ap-northeast-2.amazonaws.com
사용 기술 및 스택
- Stack
- React Hooks
- styled-components
- fetch
- Deploy : Netilfy
- Other : Git / GitHub
- Build Tool (Create React App)
- Code Quality Tool (Prettier)
디렉토리 구조 (CRA Project Structure)
1 | src |
표기법
케이스 | 약속 |
---|---|
폴더명 | 소문자로 작성 |
파일명 | 파스칼케이스 (PascalCase) |
변수명 | 카멜 케이스 (camelCase) |
constants | 대문자 + 언더바 조합 (BACKGROUND_COLOR) |
레이아웃
MainPage.jsx
의 기본 레이아웃은 화면에 가득 차도록 하여 그 안에 들어오는 두 계산기 컴포넌트들이 절반씩을 차지할 수 있도록flex
를 준다.
그리고 각 계산기 컴포넌트의 컨테이너는
50vw
만큼을 준 뒤,display: flex
를 주고 모두 중앙 정렬 시킨다.
탭 계산기 (박훈주, 이주영)
- 레이아웃 및 UI 설계 (
input
,select
로 입력값 설정 후 하단의 탭박스에 결과값 출력) - 선택된 통화의 종류에 따라 Tab의 구성이 유동적으로 변화되도록 구현
ex) 드롭다운 메뉴를 “USD” → “CAD”로 바꿀 경우, 탭 내부의 “CAD”는 제거되고 “USD” 추가.
- 선택된 Tab의
border-bottom
만 제거되도록 구현 - input 박스에 숫자만 입력되도록 설정 후 회계/통화 형식에 맞춰 콤마(,)가 천의 자리마다 찍힐 수 있도록 구현 ex) ‘2000’ 입력 시 ‘2,000’ 으로 출력
- API를 통해 실시간으로 환율 데이터를 가져와서 환율 계산기 구현.
환율 연산식 : `input 입력값 * (탭에서 선택된 통화 / 드롭다운에서 선택된 통화)`
컴포넌트 레이아웃
TabConverter의 컴포넌트 구성
1 | // TabConverter.jsx |
기능 구현
- 기준통화를 변경할 때마다 아래의 Tab 리스트가 변경되어야 한다.
- 입력값이 1000 이상일 때는 셋째 자리수마다 콤마가 찍혀야 한다.
- 선택된 기준통화에 따른 국가들의 환율 환산값이 계산되어야 한다.
1. 기준통화 변경될 때마다 Tab 리스트 변경하기
constants
에 tab에 들어갈 고정된 국가별 통화들을 배열로 입력해뒀다.
그리고 기준통화가 변경될 때마다filter()
를 활용해 tab배열이 변화되도록 구현했다.
1 | // ../constants/index.js |
1 | // ResultBox.jsx |
2. 숫자에 콤마 표시, 그리고 소수점 자리수 제한
toLocaleString()
을 활용했으며, 원활하고 즉각적인input value
를 받아오기 위해onChange
와onKeyUp
이벤트를 같이 사용했다.
1 | // onChange, onKeyUp 모두 사용 |
1 | const handleType = (e) => { |
toLocaleString()
사용법
1 | let testNum = 1234; |
3. 환율 계산
calculator()
라는 함수를 만들어 계산했다.
1 | // ResultBox.jsx |