← Back

[공부] Props를 효율적으로 사용하는 법

React
썸네일

React 컴포넌트 간 통신의 핵심인 props를 마스터하기 위해 알아야 할 5가지 기법을 소개한다.

Props 기본값 설정

컴포넌트가 안정적으로 작동하도록 기본값 설정

props를 실수로 넣지 않았을 경우를 대비해서 기본값을 설정해주는 것이 좋다.

// 기본값이 있는 Welcome 컴포넌트
function Welcome({ username }) {
  return <h1>Hello, {username}!</h1>;
}

Welcome.defaultProps = {
  username: 'Anonymous'
};

타입 검증(PropTypes)

타입스크립트를 사용하지 않을 때 사용한다.

Javasciprt의 강제 형변환을 어느정도 예방할 수 있다.

import PropTypes from 'prop-types';

function UserCard({ name, age, email }) {
  // 컴포넌트 내용
}

UserCard.propTypes = {
  name: PropTypes.string.isRequired, // 필수
  age: PropTypes.number,
};

Children Prop의 진짜 사용법

단순 텍스트부터 JSX까지 모든 것 포함 가능

layout같이 중복되는 틀을 Component로 분리할 때 사용된다

function FancyBorder({ color, children }) {
  return (
    <div style={{ border: `4px solid ${color}` }}>
      {children}
    </div>
  );
}

// 사용 예시
<FancyBorder color="gold">
  <h1>Congratulations!</h1>
  <p>You won a prize</p>
</FancyBorder>

Props 전개 연산자 활용

객체를 개별 props로 변환한다

return 내에 코드가 깔끔해져서 좋긴 한데, Props를 따로 만들어야해서 귀찮다.

컴포넌트 분리가 깔끔하게 된 프로젝트에서 매우 유용하게 쓰인다

const buttonProps = {
  type: 'submit',
  disabled: false,
  onClick: () => console.log('Clicked!')
};

// 동등한 효과: <Button type="submit" disabled={false} onClick={...} />
<Button {...buttonProps}>Send</Button>

렌더링 최적화 기법

React.memo + Props 비교 최적화

만약 id가 바뀌지 않았다면, 불필요한 리렌더링을 하지 않음

const UserProfile = React.memo(
  ({ user }) => (
    <div>
      <h2>{user.name}</h2>
      <p>{user.bio}</p>
    </div>
  ),
  (prevProps, nextProps) => 
    prevProps.user.id === nextProps.user.id
);

마무리

그냥 전역 변수로 전부 때려박아서 관리하고싶다

[시행착오] 아니 FastAPI로 다 짜면 되는거 아니야??

다양한 프레임워크를 사용해야하는 이유

[공부] React 특징 및 Hook

React