- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 아고라스테이츠
- Refactoring
- TWIL
- 에러핸들링
- react
- mongodb
- LEVEL 2
- 코어 자바스크립트
- Docker
- Git
- 리팩터링 2판
- First Project
- TMIL
- LEVEL1
- 배포
- 프로그래머스
- Err-Handling
- CSS
- 알고리즘
- LEVEL 1
- 면접을 위한 cs 전공지식 노트
- typescript
- TIL
- MariaDB
- java
- 오늘도 개발자가 안된다고 말했다
- javascript
- sql
- 코딩테스트
- CRUD
Archives
성장에 목마른 코린이
(S2W4) TIL 37일차 220323 (React 컴포넌트 디자인 - 방법론) 본문
728x90
오늘의 학습목표
- 컴포넌트 기반 Bottom-up 방식 개발이 무엇인지 이해한다.
- 컴포넌트 UI 개발에 도움을 주는 라이브러리인 Storybook을 활용할 수 있다.
- 구조적으로 CSS를 작성하는 방법의 발전과 이유에 대해서 이해한다.
학습내용
Storybook
Storybook은 컴포넌트의 재사용성을 확대하기 위해 사용하는 UI 개발도구입니다.
- 회사에서 사용하는 UI 라이브러리를 내부 개발자들을 위해 문서화하는 UI 개발도구입니다
- 컴포넌트를 시각화하여 시뮬레이션할 수 있는 다양한 테스트 상태를 만들어볼 수 있습니다.
- UI 라이브러리로 활용하기 때문에 애플리케이션과 독립적인 개발 환경에서 실행됩니다.
- 굳이 애플리케이션을 탐색하지 않아도 Storybook을 통해 전체 UI에 대한 파악을 한눈에 할 수 있습니다. 이러한 장점으로 외부에 공개하기 위한 기본 플랫폼으로도 활용할 수 있습니다.
CSS-in-JS
- CSS가 특정 컴포넌트에 종속되기 때문에 className 이 겹치는 부작용이 없어서 협업, 유지 보수에 용이합니다.
- 다른 컴포넌트에게 영향을 주지 않기 때문에 생성, 수정, 삭제가 자유롭습니다.
- 코드를 구성하는 원칙은 "의존성(dependency)이 낮고 응집성이 높게 만드는 것"인데 CSS-in-JS를 활용해서 의존성을 낮출 수 있습니다.
- CSS-in-JS는 그때그때 필요한 만큼만 style 태그를 생성합니다.
- 기본 방식은 전체 페이지에 필요한 CSS를 모두 처음부터 로딩해서 style 태그를 생성했습니다.
- CSS-in-JS 라이브러리들 종류에는 styled-components, glamorous, aphrodite 등이 있으며 그중 가장 인기 있는 라이브러리가 styled-components 입니다.
Styled-Components
Styled Component는 React 의 컴포넌트 기반 개발 환경에서 스타일링을 위한 CSS의 성능 향상을 위해 탄생하였습니다. Styled Component를 사용하면 기존 CSS 문법으로도 스타일 속성이 추가된 React 컴포넌트를 만들 수 있습니다.
- Automatic critical CSS
- Styled Component 는 화면에 어떤 컴포넌트가 렌더링 되었는지 추적해서 해당하는 컴포넌트에 대한 스타일을 자동으로 삽입합니다. 따라서 코드를 적절히 분배해 놓으면 사용자가 애플리케이션을 사용할 때 최소한의 코드만으로 화면이 띄워지도록 할 수 있습니다.
- No class name bugs
- Styled Component 는 스스로 유니크한 className 을 생성합니다. 이는 className 의 중복이나 오타로 인한 버그를 줄여줍니다.
- Easier deletion of CSS
- 기존에는 더 이상 사용하지 않거나 삭제한 컴포넌트에 해당하는 스타일 속성을 제거하기 위해 CSS 파일 안의 className을 이리저리 찾아야 했습니다. 하지만 Styled Component 는 모든 스타일 속성이 특정 컴포넌트와 연결되어 있기 때문에 만약 컴포넌트를 더 이상 사용하지 않아 삭제할 경우 이에 대한 스타일 속성도 함께 삭제됩니다.
- Simple dynamic styling
- className을 일일이 수동으로 관리할 필요 없이 React 의 props 나 전역 속성을 기반으로 컴포넌트에 스타일 속성을 부여하기 때문에 간단하고 직관적입니다.
- Painless maintenance
- 컴포넌트에 스타일을 상속하는 속성을 찾아 다른 CSS 파일들을 검색하지 않아도 되기 때문에 코드의 크기가 커지더라도 유지 보수가 어렵지 않습니다.
- Automatic vendor prefixing
- 개별 컴포넌트마다 기존의 CSS 를 이용하여 스타일 속성을 정의하면 될 뿐입니다. 이외의 것들은 Styled Component 가 알아서 처리해 줍니다.
useRef
- useRef는 DOM 엘리먼트의 특정 메서드를 활용해야 할 때 자주 사용됩니다. React에서 DOM 엘리먼트에 직접 접근하여 메서드를 이용할 방법이 제한적이기 때문입니다.
- useRef의 초기값(useRef의 첫 번째 인자)에는 어떤 참조 자료형도 할당할 수 있지만, DOM 엘리먼트나 React 엘리먼트의 주소값을 할당하여 사용하는 경우가 더 많습니다.
- 대부분의 경우 애플리케이션에서 변화하는 값은 useState로 state로 지정하여 이용해야 합니다. useRef의 리턴값은 변화되어도 컴포넌트가 재렌더링이 되지 않기 때문입니다.
- ref 속성을 활용해서 DOM 엘리먼트, React 엘리먼트의 주소값을 useRef의 리턴값에 전달할 수 있습니다.
오늘의 회고
컴포넌트 UI 개발에 도움을 주는 라이브러리인 Storybook을 이해했고, CSS-in-JS, Styled-Components의 장점을 이해했습니다. useRef는 써보기전엔 이해하기 힘들것 같습니다. 머리가 과부화가 오는 것을 느꼈고, 휴식이 좀 필요할 것 같습니다.
'Today I Learned' 카테고리의 다른 글
(S2W4) TIL 39일차 220325 (React 컴포넌트 디자인 - 실습) (0) | 2022.03.28 |
---|---|
(S2W4) TIL 38일차 220324 (React 컴포넌트 디자인 - 실습) (0) | 2022.03.28 |
(S2W4) TIL 36일차 220322 (웹서버 기초) (0) | 2022.03.28 |
(S2W4) TIL 35일차 220321 (Web Server 기초) (0) | 2022.03.21 |
(S2W3) TIL 34일차 220318 (웹서버 기초) (0) | 2022.03.20 |
Comments