제가 생각하는 좋은 컴포넌트는 하나의 책임을 가지고 있으면서 재사용하기 쉽도록 비지니스 관련 로직을 props로 받는 컴포넌트입니다.
최근 작성한 좋은 컴포넌트로는 로그아웃 및 회원 탈퇴 버튼 UI인 DimmedButton, ProfileImage가 있습니다.
React는 화면을 컴포넌트 단위로 나눠서 구성하므로 기능별로 컴포넌트를 나눠서 관리하기 쉽고 재사용성이 높다는 점이 좋았습니다.
React와 Vanila JavaScript와 비교했을 때, React는 DOM에 변경 내용을 적용할 때 Virtual DOM을 사용하여 DOM 연산을 최소화한다는 장점이 있습니다.
React와 Vue와 비교했을 때, React는 Vue보다 자유도가 높기 때문에 개발자가 원하는 방식으로 코드를 짤 수 있습니다.
useCallback은 리렌더링 시 함수 정의를 메모이제이션하기 위해 사용되는 훅입니다.
useMemo는 리렌더링 시 비싼 연산을 메모이제이션하기 위해 사용되는 훅입니다.
useCallback과 useMemo는 두 번째 인수로 dependencies 배열을 받습니다. 두 번째 인수로 아무것도 넣지 않을 경우, 리렌더링할 때마다 재실행되므로 주의해야 합니다.
또한 dependencies 배열에 필요 이상의 반응형 값을 넣어서 불필요하게 재실행되지 않도록 주의해야 합니다.
getInitialProps
는 페이지에 기본적으로 내보내지는 react 컴포넌트에 추가될 수 있는 비동기 함수입니다.
getInitialProps
함수의 실행 결과는 React 컴포넌트에게 props 형태로 전달됩니다.getInitialProps
함수의 반환값은 직렬화된 객체입니다.getInitialProps
는 pages/
최상위 레벨 페이지에서만 사용할 수 있습니다.getInitialProps
는 lagacy API이므로 대신에 getStaticProps
나 getServerSideProps
를 사용하도록 합니다.
getStaticProps
함수를 사용하면, Next.js는 getStaticProps
에서 반환된 props를 사용하여 빌드 시간에 페이지를 사전 렌더링(pre-rendering) 합니다.
getStaticProps
함수는 항상 서버에서만 실행됩니다.getServerSideProps
함수를 사용하면, Next.js는 데이터를 요청할 때마다 getServerSideProps
함수로부터 반환된 데이터를 사용하여 페이지를 사전렌더링(pre-rendering) 합니다.
getServerSideProps
함수는 항상 서버에서만 실행됩니다.getServerSideProps
함수를 사용해야 합니다.