리액트 공식문서 과제 오답노트

2026. 2. 19. 19:05·web/react

intro

안녕하세요, 오늘도 리액트 공식문서 읽기로 돌아왔습니다.

이번시간이 공식문서 관련해서 포스팅하는건 마지막같네요.

해당 게시글은 리액트 공식문서에서 파트별로 마지막에 챌린지를 하는 부분에서

어렵거나 헷갈렸던 코드들을 정리해보았습니다.

그럼 바로 start~

 


 

컴포넌트에 Props 전달하기

function Card({ children, title }) {
  return (
    <div className="card">
      <div className="card-content">
        <h1>{title}</h1>
        {children}
      </div>
    </div>
  );
}

export default function Profile() {
  return (
    <div>
      <Card title="Photo">
        <img
          className="avatar"
          src="https://i.imgur.com/OKS67lhm.jpg"
          alt="Aklilu Lemma"
          width={100}
          height={100}
        />
      </Card>
      <Card title="About">
        <p>Aklilu Lemma was a distinguished Ethiopian scientist who discovered a natural treatment to schistosomiasis.</p>
      </Card>
    </div>
  );
}

 

<card>태그 내부에 있는 것들은 모두 children이라는 예약된 props로 들어감.!
children의 개념을 잘 몰랐어서 어떻게 img태그의 요소들이 props로 들어가나 했었다!



조건부 렌더링

function Item({ name, isPacked }) {
  return (
    <li className="item">
      {isPacked ? (
        <del>
          {name + ' ✅'}
        </del>
      ) : (
        name
      )}
    </li>
  );
}

export default function PackingList() {
  return (
    <section>
      <h1>Sally Ride's Packing List</h1>
      <ul>
        <Item
          isPacked={true}
          name="Space suit"
        />
        <Item
          isPacked={true}
          name="Helmet with a golden leaf"
        />
        <Item
          isPacked={false}
          name="Photo of Tam"
        />
      </ul>
    </section>
  );
}

Item컴포넌트 내부에서 삼항연산자를 사용하는 것이 때로는 헷갈렸다. 

저 안에서 많이 쓰이는 패턴이라고 들어서 삼항연산자 사용에 익숙해져야겠다.


또한 and연산자도 조건부 렌더링을 할때 사용이 되는데,

return (
  <li className="item">
    {name} {isPacked && '✅'}
  </li>
);

이런식으로 사용하여, ispacked면 체크를 렌더링 하고, 그렇지 않으면 아무것도 렌더링 하지 않는다는 것을 의미한다.

 


 

이벤트에 응답하기: 해당코드의 문제점이 뭘까?

export default function LightSwitch() {
  function handleClick() {
    let bodyStyle = document.body.style;
    if (bodyStyle.backgroundColor === 'black') {
      bodyStyle.backgroundColor = 'white';
    } else {
      bodyStyle.backgroundColor = 'black';
    }
  }

  return (
    <button onClick={handleClick()}>
      Toggle the lights
    </button>
  );
}

이 코드에서 return문에서 handleClick옆에 괄호를 붙혀 렌더링 중 호출한다는 오류가 발생되게금 했다.

()호출을 삭제하여 <button onClick={handleClick}>으로 수정하면 잘 작동한다.

 

260219
다음 번 공부할 내용은 상호 작용성 더하기 부분이다.


 

 

저작자표시 (새창열림)

'web > react' 카테고리의 다른 글

리액트 Context에 대해 알아보고 다크모드를 만들어보자! (feat: custom hook)  (0) 2026.03.30
리액트에서 왜 불변성을 지켜야 할까?  (0) 2026.03.13
useRef는 어떻게 데이터를 변화시키지 않을 수 있을까?  (0) 2026.02.27
리액트 공식문서 - 틱택토 게임  (0) 2026.02.11
리액트 기본 - 공식문서 리딩  (0) 2026.02.11
'web/react' 카테고리의 다른 글
  • 리액트에서 왜 불변성을 지켜야 할까?
  • useRef는 어떻게 데이터를 변화시키지 않을 수 있을까?
  • 리액트 공식문서 - 틱택토 게임
  • 리액트 기본 - 공식문서 리딩
noeyh
noeyh
기록하고 성장하는 개발자, 최유현 입니다. github : https://github.com/Choiyuhyeon
    티스토리 홈 로그아웃
  • noeyh
    CreateU
    noeyh
  • 전체
    오늘
    어제
  • 글쓰기 관리
    GitHub
    Notion
    • 분류 전체보기 (31)
      • web (22)
        • html (5)
        • css (4)
        • js (5)
        • react (6)
        • next (1)
      • server (0)
      • linux (0)
      • figma (0)
      • ml (0)
      • algorithm (5)
      • git (1)
      • 미니프로젝트 (0)
      • 프로젝트 (0)
      • 정보 (0)
      • 일상 (0)
      • memo (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • hELLO· Designed By정상우.v4.10.6
noeyh
리액트 공식문서 과제 오답노트
상단으로

티스토리툴바