⚛️ React/문제풀기 (코딩애플: React)

React : 좋아요버튼 만들기 (숏서킷평가,삼항연산자)

Zoeeey 2023. 5. 2. 17:05

조건

좋아요 버튼을 누르면 각각의 게시글의 좋아요가 1씩 올라가야 한다.


풀이

function App() {
  let [title, setTitle] = useState(['쌍검사길드에서 닌자시작퀘 받기', '파판14 초보자 가이드 이벤트 진행안내', '귀여운 구부 꼬마친구를 받아보자']);
  let [like, setLike] = useState([0,0,0]);
  let handlesetLike = (i) => {
    let copyLike = [...like];
    copyLike[i] = copyLike[i] + 1;
    setLike(copyLike);
  }

  return (
    <div className="App">
      { 
        title.map(function(a,i){
          return (
          <div className="list" key={i}>
            <h4>{ title[i] }</h4>
            <p><button onClick={() => handlesetLike(i)}>👍</button> { like[i] } </p>
            <p>2월 18일 발행</p>
          </div> )
        }) 
      }
      {modal == true ? <Modal></Modal> : null}
      
    </div>
  );
}

알게 된 점

handlesetLike는 파라미터로 i를 담았기 때문에 onClick={()=>handlesetLike(i)}로 넣어줘야 작동을 했다.
(파라미터로 아무것도 담지 않은 함수는 그냥 onClick={ 함수 }로 담아도 작동했었다.)

알게 된 점 2

아래 세 가지 코드는 모두 동일하게 작동한다.
세 가지 코드 모두 modal prop 값이 true일 때에만 <Modal> 컴포넌트를 렌더링하고, 그렇지 않은 경우에는 null을 반환한다. 첫 번째 코드와 두 번째 코드는 모두 "삼항 연산자"를 사용하여 구현되었고, 세 번째 코드는 "숏서킷 평가"를 사용하여 구현되었다.

{modal == true ? <Modal></Modal> : null}
{modal ? <Modal title={title} /> : null}
{modal && <Modal title={title} />}

출처 : 코딩애플 https://codingapple.com/