코딩기록

React, TS, Next.js 프로젝트) 트러블 슈팅 - button > Image 컴포넌트 토글 본문

프론트/리액트

React, TS, Next.js 프로젝트) 트러블 슈팅 - button > Image 컴포넌트 토글

뽀짝코딩 2025. 6. 4. 17:10
728x90

        상황:
          써치버튼 클릭시 x, input 활성화됨 반대로 x 클릭시 써치버튼 활성화 안됨.

        이유: Next.js의 <Image /> 컴포넌트는 최적화를 위해 내부적으로 이미지 캐싱을 강하게 적용,
          그래서 src만 바꿔도 리렌더링이 안 될 수 있음.
          <Image src={search} /> → <Image src={close} />
          이렇게 하면 src는 바뀌었지만, Next.js가 내부적으로 같은 컴포넌트로 판단해서 업데이트를 생략함.

        해결:
          key={showInput ? "close" : "search"} // 🔑 캐시 무효화용 코드 추가
          key 값이 바뀌면 React는 이 컴포넌트를 새로운 컴포넌트로 인식하고 다시 렌더링함.
          그래서 close → search 이미지 변경이 정상 반영됨.

 

    [변경전]
    <Image
      src={showInput ? close : search}
      alt={showInput ? "닫기" : "검색"}
      className="w-10 h-10"
      unoptimized
    />

 

  [변경후]
    <Image
      key={showInput ? "close" : "search"} // 🔑 캐시 무효화용
      src={showInput ? close : search}
      alt={showInput ? "닫기" : "검색"}
      className="w-10 h-10"
      unoptimized
    />

 

 

 

반응형
Comments