class
, function
이 있다.PascalCase 문법
사용을 권장재사용 가능한 컴포넌트를 만들어 놓는 것은 더 큰 앱에서 작업할 때 두각을 나타냅니다. UI 일부가 여러 번 사용되거나 (Button, Panel, Avatar), UI 일부가 자체적으로 복잡한 (App, FeedStory, Comment) 경우에는 별도의 컴포넌트로 만드는 게 좋습니다.
class MyComponent exnteds React.Component {
state = {
myState: 0,
};
render() {
return <button>
{this.state.myState}
</button>
}
}
state
Object가 있고 상태에 따라 동적으로 렌더링된다.state
가 변경이되면 render()
가 호출이 되며 업데이트된 내용이 사용자에게 보여짐lifecycle methods
를 사용가능props
를 전달 받아 어떻게 UI를 구성해야할지 설정하여 React 요소(JSX를 Babel이 반환 처리)로 반환function App(props) {
return <h1>{props.children}</h1>
}
state(상태)
가 없고 항상 정적으로 데이터가 표기됨lifecycle methods
없다.React 16.8 ver
부터 React Hook
이 도입이 됨state
와 lifecycle methods
을 사용할수 있게 해준다.<div id="root">
에 root component를 연결시켜줌// index.html (최종 배포용 html)
<body>
<div id="root"></div> // 달랑 div 태그 하나
</body>
// index.js
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './app';
// ReactDom을 이용해 root element와 root component를 연결
ReactDOM.render(
<React.StrictMode> // '엄격모드' 사용
<App />
</React.StrictMode>
document.getElementById('root');
);
컴포넌트를 모듈 단위로 개발하여 사용자 인터페이스(UI) 구축에 도달하는 개발 및 설계 방법론
기본적인 단위부터 시작하여 UI 뷰(view)를 구성하기 위해 점진적으로 결합(조립)해가는 상향적(bottom-up) 성향을 뛴다
이 방법은 UI를 구축할 때 직면하게 되는 앱 규모의 복잡성을 해결한다.
왜 CDD인가?
UI는 애플리케이션 규모가 커짐에 따라 다루기 어려워진다.
규모가 큰 UI는 깨지기 쉽고 디버깅이 어려울 뿐더러 제작에도 많은 시간이 필요하다.
UI를 모듈식으로 세분화하여 견고하면서도 유연한 컴포넌트를 구성하면 이러한 문제를 해결할 수 있다.
컴포넌트는 애플리케이션 비즈니스 로직에서 상태를 분리하여 상호 교환을 가능하게 한다.
항목 | 설명 |
---|---|
품질(Quality) | 독립적으로 컴포넌트를 분리하여 관련 상태를 정의하여 UI가 다양한 시나리오에서 작동하는지 확인 가능 |
내구성(Durability) | 컴포넌트 수준에서 테스트하여 세부 사항까지 버그를 정확하게 찾아낼 수 있다. 테스트보다 작업량이 적다. |
속도(Speed) | 컴포넌트 라이브러리 또는 디자인 시스템의 컴포넌트를 재사용하여 UI를 보다 빠르게 조립 가능 |
효율성(Efficiency) | UI를 개별 컴포넌트를 분해 한 다음 서로 다른 팀 구성원 간에 공유하여 개발 및 디자인을 병렬 처리 한다. |
웹 사이트를 페이지 모음 정도로 취급하는 개발 및 디자인 프로세스
페이지에서 공통 요소를 재사용하기 위해 많은 노력을 기울이지 않는다.
Wordpress 또는 Drupal은 문서를 화면에 렌더링 하는데 중점을 둔 도구
Rails, Django 및 PHP와 같은 백엔드 프레임워크는 UI 재사용을 사후 고려사항으로 간주하고 광범위한 컴포넌트 재사용을 방지
에셋(Figma, Sketch 등), 설계 원리, 컴포넌트 라이브러리를 포함하는 모든 UI 패턴 사용자, 인터페이스 설계에 대한 전체적인 접근 방식
짧은 피드백 루프와 빠른 반복을 촉진하는 소프트웨어 개발 방법
컴포넌트는 미리 만들어질 빌딩 블록을 다시 사용하여 팀이 보다 빨리 구축하는 것을 도와준다.
이를 통해 애자일 팀은 사용자 요구사항에 더욱 더 집중할 수 있다.
정적 파일을 사전 렌더링하고 CDN에서 직접 제공하는 웹 사이트를 구축하는 방법론
JAMStack 사이트 UI는 컴포넌트화 된 JS 프레임워크에 의존한다.