Today’s Key 🔑


Phone-Book을 구현하면서 기록할 것들

Velopert는 위대하다.

우선, 비구조화 할당으로 객체 형태의 props를 받아올 때, 해당 props를 실수로 전달해주지 않을 경우 발생하는 충돌을 해결하는 defaultProps. 아래의 코드처럼 컴포넌트의 상단에서 랜더 함수 내부에서 정의된 props ‘info’의 기본값을 설정해줄 수 있다.

static defaultProps = {
    info: {
      name: '이름',
      phone: '010-0000-0000',
      id: 0
    }
  }

...

render() {
  const {
      name, phone, id
    } = this.props.info;
}


다음으로, 컴포넌트 내부에 배열을 이용하여 상태를 저장하는 경우가 많다. 그래서 배열에 저장한 데이터를 map과 같은 함수형 메소드로 브라우저에 보여지게 만든다. 이때 주의해야 할 점은 ‘key’라는 요소를 JSX에 심어주는 것이다.

render() {
  const { data } = this.props;
  const list = data.map(
    info => (<PhoneInfo key={info.id} info={info}/>)
  );

info.id 라는 고유한 값을 key에 넣어주어 리엑트가 변화를 자연스럽게 감지하고, 업데이트시에 불필요한 작동 없이 최적화해준다. 리엑트로 배열을 처리해 줄 때 주의해야 하는 부분이다. key 값을 따로 설정해주지 않으면 자연스럽게 배열의 인덱스를 가진다. (최적화가 힘들 뿐이다. 랜더링에는 문제 없다.)


내일도 계속해서 react를 공부하면서 정규 일정을 소화할 예정이다. 내일은 또 신경치료를 하는 날인데, 잘 할 수 있을지 싶다 ㅠㅠ 🙃