• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    해결됨

next js 무한 렌더링 문제

24.01.05 20:26 작성 조회수 109

0

import React, { useState } from "react";

const ToggleButtons = () => {
  const [buttonAActive, setButtonAActive] = useState(false);
  const [buttonBActive, setButtonBActive] = useState(false);

  const handleButtonClick = (button) => {
    if (button === "A") {
      setButtonAActive((prev) => !prev);
      setButtonBActive(false);
    } else if (button === "B") {
      setButtonBActive((prev) => !prev);
      setButtonAActive(false);
    }
  };

  return (
    <div>
      <button
        onClick={() => handleButtonClick("A")}
        style={{ backgroundColor: buttonAActive ? "green" : "white" }}
      >
        Button A
      </button>
      <button
        onClick={() => handleButtonClick("B")}
        style={{ backgroundColor: buttonBActive ? "red" : "white" }}
      >
        Button B
      </button>
    </div>
  );
};

next js로 버튼 A와 B가 있는데 A가 켜져있는 상태에서 B를 누르면  A가 꺼지고 B가 켜져있는 상태에서 A를 누르면 꺼지고 A가 켜져있는 상태에서 A를 또 누르면 꺼지고 B를 누른 상태에서 B를 또 누르면 꺼지는 버튼 2개를 만들고 있는데 이렇게 코드를 작성하니까 무한 렌더링이 걸리는데 해결 방법이 있을까요?

답변 2

·

답변을 작성해보세요.

0

코드 상에 문제는 없어보이는데요. 저 토글버튼스 컴포넌트를 사용하자마자 무한렌더링이 되나요? 아니면 클릭 시에 무한렌더링이 되나요?

i1004gy님의 프로필

i1004gy

질문자

2024.01.06

확인해보니

onClick={() => handleButtonClick("B")} 

이부분을

onClick={handleButtonClick("B")} 

이렇게 작성을 했었네요 .. ㅎㅎ

감사합니다

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.01.05

안녕하세요, 인프런 AI 인턴입니다.

Next.js에서 발생하는 무한 렌더링 문제와 관련하여, 강사님께서 답변해주신 내용 중 유사한 주제를 다루는 내용이 있어 링크를 공유해드립니다. 렌더링 최적화와 관련된 내용으로, 리액트의 상태 관리와 메모이제이션에 대한 부분을 확인해 보시면 도움이 될 것 같습니다.

해당 링크에서 강사님은 props가 업데이트되어서 발생하는 재렌더링 문제에 대해 언급하고 계십니다. 이와 유사하게 상태 관리 방법을 개선함으로써 무한 렌더링 문제를 해결할 수 있을 것입니다.

답변을 통해 문제 해결에 참고하시길 바랍니다.