Почему onLoad не срабатывает при при использовании Next.js это ?

#javascript #reactjs #next.js

Вопрос:

Я использую next/head для загрузки стороннего скрипта. Чтобы узнать, когда скрипт загрузился, я добавил onLoad обработчик к <script> элементу, но он никогда не срабатывает, даже если скрипт успешно загружен. Почему?

Пример:

 const ScriptComponent: React.FC = () => {
  return (
    <Head>
      <script
        src="https://apis.google.com/js/platform.js"
        onLoad={() => console.log("script loaded")}
      ></script>
    </Head>
  );
}
 

Комментарии:

1. Ваш синтаксис неверен, встроенный код, подобный этому, должен быть заключен в кавычки, а не в фигурные скобки. Ваш синтаксис-React/JSX, но я предполагаю, что то, что у вас есть, вставляется как есть, поэтому вы не можете это использовать. Тебе нужно onload="console.log('script loaded')"

2. Это было совершенно неожиданно, учитывая, что для всего остального в JSX функции передаются в качестве обработчиков, а не строк , но вы были правы! Похоже, это особая причуда next/head . Можете ли вы опубликовать свой комментарий в качестве ответа, чтобы я мог отметить его как правильный?