TIL 12.23

새양말·2022년 12월 24일
0

내일배움캠프TIL

목록 보기
35/74
post-thumbnail

카테고리를 선택할 때 state 변경이 일어나도록 하는 함수를 연결했다.
그런데 무한 렌더링에 빠졌다는 에러메세지가 떠서 잘못된 부분을 찾아야 했다.

잘못된 시도)

const handleClick = (menu) => setCurrProductMenu(menu)
return (
    <div>
      <StyledCategroyBox>
        <div onClick={handleClick('bread')}>Bread</div>

onClick함수에 함수값 자체를 넣어버린 것이 되고,
그러면 클릭을 했을 때만 state변경이 일어나는 것이 아니라
홈페이지 렌더링 했을 때부터 state변경이 되면서 다시 처음 부터 이 함수를 실행하게 된다. 말그대로 무한 렌더링!

해결)

// product_posts 저장값 중 하나인 productmenu값을 카테고리와 연결하여 state변경을 일으키는 함수
  // currying! onClick함수의 인자를 비워둬야 제대로 함수식을 쓴 것!
  const handleClick = (menu) => () => {
    setCurrProductMenu(menu);
  };

onClick함수는 기본 형태가 ()=>{...}이어서 인수부분을 비워줘야 작동하므로
함수를 정의 할 때 빈 인수형태의 함수가 실행되도록 필요한 인수는 따로 받아줘야 한다.
currying 형태에 대해서 다시 공부하기!

return (
    <div>
      <StyledCategroyBox>
        <div onClick={handleClick('bread')}>Bread</div>

제대로된 함수를 넣어주었더니 잘 작동한다.

profile
매번 기합넣는 양말

0개의 댓글