개발자
next.js에서 HTML img element의 onload가 가끔 실행이 안되는데 이유를 아시는 분 계신가요? img의 onload에 isLoading 값을 바꿔주는 콜백 함수를 넣었는데, 가끔 실행이 안되어서 무한 로딩 화면이 보여지더라구요. 간략하게나마 코드 첨부해봅니다. 도와주세요 선생님들 ㅠㅠ import { useState } from "react"; export default function Home() { const [isLoading, setIsLoading] = useState(true); const hello = () => { console.log("loaded") // 왜 안되지... // setIsLoading(false) } return ( <div className="App"> {isLoading && <p>Loading...</p>} <img onLoad={() => hello()} src="이미지 url" /> </div> ); }
답변 1
안녕하세요! Next.js를 사용하신다면 Next.js의 Image 컴포넌트를 사용하는걸 추천드립니다. 각종 최적화 기법들이 적용된 것으로 알고 있습니다. img.onload는 경우에 따라 실행되지 않을 수 있다고 합니다. ex) 브라우저 캐시에 이미지가 남아있을 경우, onload를 수행하지 않고 바로 렌더가 되어버린다고 합니다. - https://nextjs.org/docs/api-reference/next/image - https://stackoverflow.com/questions/12354865/image-onload-event-and-browser-cache - https://stackoverflow.com/questions/67969732/onload-doesnt-fire-on-cached-images - https://stackoverflow.com/questions/59787642/nextjs-images-loaded-from-cache-dont-trigger-the-onload-event
익명
작성자
2022년 10월 18일
앗 그렇군요!! 링크 걸어주신 문서들도 확인해 보겠습니다 정말 감사합니다ㅠㅠ
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!