환율 계산기
프리온보딩 구현 과제
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 |