Cómo comprobar el estado de carga de un script externo en Next.js

힘센캥거루
2025년 10월 20일(수정됨)
2
103
Cómo comprobar el estado de carga de un script externo en Next.js-1

1. Reconocimiento del problema

En Nextjs, comprobé si el Script se había cargado utilizando onLaod y useState, y surgió un problema.

Por ejemplo, el siguiente es un ejemplo.

"use client";

import Script from "next/script";
import { useState } from "react";

export default function Page() {
  // Comprobar la carga del script con useState
  // Cuando el script se carga, cambiar el estado de scriptLoad en onLoad
  const [scriptLoad, setScriptLoad] = useState(false);
  return (
    <div>
      <Script
        src="https://example.com/sample.js"
        onLoad={() => setScriptLoad(true)}
      />
      {scriptLoad ? <div>¡Carga completada!</div> : <div>¡Cargando!</div>}
    </div>
  );
}

Si lo hacemos así, cuando el componente se monta por primera vez y el script se carga, el estado de scriptLoad cambia correctamente de false a true.

El problema aparece cuando el script se ha cargado una vez y el componente se vuelve a montar.

Cómo comprobar el estado de carga de un script externo en Next.js-2

Básicamente, el componente Script, una vez montado, garantiza que el script solo se cargue una vez aunque el usuario navegue por varias rutas dentro de Nextjs.

Por lo tanto, después de visitar esa página una vez, cuando la vuelves a visitar, el script ya está cargado, de modo que el estado de useState no cambia.

2. Usar onReady en lugar de onLoad

Por más que busqué, no pude encontrar una solución, así que revisé la documentación oficial de Nextjs sobre el componente Script.

El componente Script puede recibir un total de 5 props.

Cómo comprobar el estado de carga de un script externo en Next.js-3
  • src : ruta del script

  • strategy : ajuste fino del comportamiento de carga. Solo se puede usar en el servidor.

  • onLoad : se ejecuta cuando la carga del script ha finalizado

  • onReady : se ejecuta cada vez que el componente se monta después de que la carga del script haya finalizado

  • onError : se ejecuta si la carga del script falla

Entre ellos, yo usaba onLoad, por lo que el cambio de estado solo se producía cuando el script se cargaba por primera vez.

Simplemente se soluciona cambiando onLoad por onReady.

...
export default function Page() {
...
      <Script
        src="https://example.com/sample.js"
        onReady={() => setScriptLoad(true)}
      />
...

3. Reseñas finales

No sé cuántas horas estuve dándole vueltas solo por esto.

Intenté resolver la duda con IA, pero tanto Claude como ChatGPT solo soltaban tonterías mencionando código de la época de explore, así que fue bastante frustrante.

Fue un día en el que sentí con fuerza que me gustaría tener a alguien al lado que me guiara.

Cómo comprobar el estado de carga de un script externo en Next.js-4

관련 글

공문서 완전 자동화 해보기 - ChatGPT, Claude, kordoc + python-hwpx
공문서 완전 자동화 해보기 - ChatGPT, Claude, kordoc + python-hwpx
대한민국 공공기관은 여전히 .hwp 확장자를 가진 파일을 많이 사용한다.이 파일은 한글과컴퓨터에서 만든 독자 규격 문서다.문제는 이 형식이 다른 프로그램과 완전히 호환되지 않는다는 데 있다.문서를 열어보는 것은 가능하다.하지만 그 내용을 구조적으로 읽고, 데이터처럼 활...
Relato del desarrollo de un blog full‑stack con Next.js
Relato del desarrollo de un blog full‑stack con Next.js
Alrededor de un año después de empezar con el desarrollo web, empecé a pensar que quería tener mi propio blog.Así que estuve dedicado a esto durante u...
Despliegue sin interrupciones de Nextjs (servidor local) usando Caddy
Despliegue sin interrupciones de Nextjs (servidor local) usando Caddy
Cada vez que me entraban ganas de seguir añadiendo cosas a la página web, hacía un build, y en ese intervalo parece que había gente que se conectaba d...
Automatización de la indexación de búsqueda de Google - Web Search Indexing API
Automatización de la indexación de búsqueda de Google - Web Search Indexing API
Después de IndexNow, decidí probar también la automatización con Google.Buscando un poco, vi que Google ofrecía algo llamado Web Search Indexing a tra...
Automatizar la creación de índices de búsqueda - IndexNow
Automatizar la creación de índices de búsqueda - IndexNow
Mientras estaba registrando el sitio en Bing, me enteré de que Bing ofrece una función llamada IndexNow.Lo esencial es que, usando una clave de API, p...
Experiencia de que hackearan mi servidor Nextjs y React
Experiencia de que hackearan mi servidor Nextjs y React
La primera vez que me encontré con este problema de seguridad fue la madrugada del 5 de diciembre.Que en React era posible ejecutar código de forma re...

댓글을 불러오는 중...