후속 처리 메서드
onLoad
•
onLoad 는 beforeInteractive와 함께 사용할 수 없음 (대신 onReady를 사용해야 함)
•
타사 스크립트 로드가 완료된 후 사용자가 자바스크립트 코드를 한 번 실행하는 경우 (ex. lodash)
'use client'
import Script from 'next/script'
export default function Page() {
return (
<>
<Script
src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.20/lodash.min.js"
onLoad={() => {
console.log(_.sample([1, 2, 3, 4]))
}}
/>
</>
)
}
JavaScript
복사
[Question - 오늘 내용과 직접관련 X] 환수님 이전에 프로젝트에서 lodash를 걷어내느라 고생했다 하셨는데 tree-shaking 하면 용량이 얼마 안되지 않을 것 같은데, 전체적으로 걷어낸 상황을 조금 더 설명해 주실 수 있을까요? 갑자기 lodash랑 스크립트 내용을 보니 생각나셔요 
onReady
•
스크립트가 처음 로드될 때 코드를 실행
•
이후 컴포넌트가 다시 마운트될 때마다 onReady 속성을 사용하여 코드를 실행
'use client'
import { useRef } from 'react'
import Script from 'next/script'
export default function Page() {
const mapRef = useRef()
return (
<>
<div ref={mapRef}></div>
<Script
id="google-maps"
src="https://maps.googleapis.com/maps/api/js"
onReady={() => {
new google.maps.Map(mapRef.current, {
center: { lat: -34.397, lng: 150.644 },
zoom: 8,
})
}}
/>
</>
)
}
JavaScript
복사
onError
•
스크립트가 로드되지 않았을 때 onError 프로퍼티로 처리
'use client'
import Script from 'next/script'
export default function Page() {
return (
<>
<Script
src="https://example.com/script.js"
onError={(e: Error) => {
console.error('Script failed to load', e)
}}
/>
</>
)
}
JavaScript
복사