하트 버튼을 눌렀을 때 고양이 이미지가 추가되는 기능을 만들어보려고 한답..




우선, 가장 먼저 해야할 것은 하트 클릭 함수를 끌어올리는 것이다.

const App = () => {
  const CAT1 = "https://cataas.com/cat/60b73094e04e18001194a309/says/react";
  const CAT2 = "https://cataas.com//cat/5e9970351b7a400011744233/says/inflearn";
  const CAT3 = "https://cataas.com/cat/595f280b557291a9750ebf65/says/JavaScript";

  const [counter, setCounter] = React.useState(1);


  function handleFormSubmit(event) {
    event.preventDefault();
    console.log("폼 전송됨");
    setCounter(counter + 1);
    setMainCatImg(CAT2);
  }

  function handleHeartClick() { // 하트 클릭 이벤트
    console.log("버튼 클릭");
  }

  return (
    <div>
      <Title>{counter}번째 고양이 가라사대</Title>
      <Form handleFormSubmit={handleFormSubmit} />
      <MainCard img={mainCatImg} alt="고양이" handleHeartClick={handleHeartClick} /> //props로 전달
      <Favorites favorites={favorites} />
    </div>
  );
}

handleHeartClick을 APP으로 끌어올리고,
props로 handleHeartClick을 넘겨주었다~



그 다음으로 할 일은 바로바로!
하트를 클릭하면, 새로운 이미지가 추가될 수 있도록 하는 것이다.
그럴려면, state를 사용해주어야겠지….???

const App = () => {
  const CAT1 = "https://cataas.com/cat/60b73094e04e18001194a309/says/react";
  const CAT2 = "https://cataas.com//cat/5e9970351b7a400011744233/says/inflearn";
  const CAT3 = "https://cataas.com/cat/595f280b557291a9750ebf65/says/JavaScript";

  const [counter, setCounter] = React.useState(1);
  const [mainCatImg, setMainCatImg] = React.useState(CAT1); //이미지 추가 state


  function handleFormSubmit(event) {
    event.preventDefault();
    console.log("폼 전송됨");
    setCounter(counter + 1);
    setMainCatImg(CAT2);
  }

  function handleHeartClick() {
    console.log("버튼 클릭");
    setFavorites([...favorites, CAT3]); //하트 클릭 시, 추가될 수 있도록 한다.  
  }

  return (
    <div>
      <Title>{counter}번째 고양이 가라사대</Title>
      <Form handleFormSubmit={handleFormSubmit} />
      <MainCard img={mainCatImg} alt="고양이" handleHeartClick={handleHeartClick} />
      <Favorites favorites={favorites} />
    </div>
  );
}



앞서 배운 것들을 종합해서 한 번에 기능을 써보니,
사용법에 더 익숙해지는 것 같다 ㅎㅎ
역시 뭐든지 실전에서 사용을 해봐야 제대로 사용법을 알 수 있는 것 같다!!

태그:

카테고리:

업데이트: