
<컴포넌트명 속성명 = "값" />
constructor :상태 및 속성 초기설정, this.state : 상태 정의, render() : UI생성class MyComponent extends React.Component {
constructor(props) {
super(props);
this.state = {
// 상태 초기화
};
}
// UI 생성
render() {
return (
<div className='App'>
Class Component
</div>
);
}
}
`props` : 속성을 받아오는 부분, `useState` : 상태관리, `userEffect`: 생명주기 관리, `return JSX` : UI 생성
Props: 컴포넌트에 전달되는 속성값으로 부모 컴포넌트가 자식 컴포넌트로 데이터를 전달하는데 사용된다.
- 타입정의 :
propTypes속성 사용,타입스크립트(권장)- defaultProps : 기본속성값 설정 가능
- 렌더링시 한번만 설정된다. (렌더링 후에는 바뀌지 않는다.)
상태: 컴포넌트 자체에서 관리하는 데이터이다.
- 상태변경 :
useState()- 부모 컴포넌트의 상태가 변경되면 그 상태를 참조하는 모든 자식 컴포넌트가 리렌더링된다.
- 상태는 성격에 맞게 분리하여 사용할 것 (필요한 부분만 업데이트되어 성능이 향상된다. 분리되지 않으면 불필요한 리렌더링 수가 증가한다. 참고로, Real Active DOM은 해당 상태를 참조하는 부분만 다시 그린다.(paint & display))
function MyFunctionalComponent(props) { // props: 속성을 받아오는 부분
// useState, useEffect 등을 사용하여 상태 및 생명주기 관리
// JSX 반환
return (
<div className='App'>
Function Component
</div>
);
}
올라간 뒤 호출 (getSnapshotBeforeUpdate)업데이트될 때마다 호출소멸하기 전에 호출const로 가볍게 선언return JSX : UI 렌더링useEffect, useLayoutEffect : 생명주기 관리(마운트, 업데이트, 언마운트)return of useEffect, useLayoutEffect : 정리작업 처리. (useEffect내에서 반환된 함수는 언마운트, 업데이트시에 정리작업을 처리한다.)index.tsx에서 React.StrictMode로 App이 감싸져 있으면 생명주기를 2번 호출한다. (componentDidMount, componentWillUnmount)React.StrictMode가 없으면 생명주기를 1번만 호출한다. (componentDidMount)<React.StrictMode>
<App />
</React.StrictMode>
설계는 큰 단위부터 작은 단위로 하고, 구현은 작은 단위부터 큰 단위로 한다.
Atoms : UI의 최소 단위. 단일한 역할 수행하며 독립적으로 사용가능하다. [ex] Input, Button 등Molecules : 한 개 이상의 Atoms 구성하여 단일한 역할을 수행한다. [ex] LoginForm, SearchForm 등OrganismsPresentation: 상태나 데이터 없이 HTML, CSS만 정의Container Components : 데이터 및 로직처리. Presentation를 관리하고 제어TemplatesPages : Templates에 Data를 포함하여 완성된 최상위 컴포넌트. 최종적으로 완성된 페이지이다. 독립적으로 작성한다.순수 함수형 컴포넌트로 작성한다.데이터를 가져오는 부분과 화면을 그리는 부분은 분리하여 작성합니다.상태공유 단위로 분리한다.(useContext)