<aside> <img src="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/f765100f-b481-437e-b531-5aae8d9bc5fe/1200px-React-icon.svg.png" alt="https://s3-us-west-2.amazonaws.com/secure.notion-static.com/f765100f-b481-437e-b531-5aae8d9bc5fe/1200px-React-icon.svg.png" width="40px" /> 이것이 완벽하다고 할 수는 없지만, 최선이라고 할 수 있을 것 같습니다.

</aside>

왜 컴포넌트 파일 작성법을 알아야 하는 거야?

응 너 혼자 개발하는게 아니잖아 ㅎㅎ. 그렇다. 우리가 리액트나 기타 프레임워크, 라이브러리로 개발을 진행할 때는 정해진 규칙을 따르기 마련이다. 흔히 컨벤션이라고 하는 코드 작성 규칙 부터 팀, 조직 내부에서 정의한 컴포넌트 작성 규칙 등이 있을 것이다. 규칙을 잘 따르지 않거나 규칙 자체가 없다면 코드 가독성은 물론이고, 내가 퇴사 등을 하여 다른 사람이 내가 작성한 컴포넌트를 볼 때 쉽게 알아볼 수 없을 것이다.

그래서 원만한 개발 환경 구축을 위해서 우리는 리액트에서 컴포넌트를 작성할 때 지킬 수 있는 매끄러운 컴포넌트 작성 방법을 공부할 필요가 있다.

01. 가장 상단에 컴포넌트 속성의 타입을 정의하자.

// User 컴포넌트를 만든다고 가정하고, 사용될 속성의 타입을 정의해본다.
import PropTypes from 'prop-types';

User.propsTypes = {
	sex: PropTypes.bool.isRequired,
	age: PropTypes.number,
	hairColor: PropTypes.oneOf(['gold', 'red', 'black']),
	onChangeName: PropTypes.func,
	onChangeAge: PropTypes.func.isRequired
}

02. 컴포넌트는 반드시 이름을 붙인다.

// props type 지정 이후
...

export default function Component() {}

03. 컴포넌트의 매개변수는 구조 분해하여 할당하는 것이 좋다.

function Component({ props1, props2 }) {}

04. 컴포넌트 외부에서 정의되는 변수, 함수, 상수 등은 컴포넌트 아래에 작성한다.