Не удается загрузить внешнюю библиотеку JavaScript через крюк React

#javascript #reactjs #react-hooks

Вопрос:

Я пытаюсь использовать внешнюю библиотеку JavaScript, которая недоступна в качестве модуля узла. Для этого я взял пример кода, описанный здесь, но мое приложение React продолжает терпеть неудачу при попытке получить доступ к свойствам, которые должны быть доступны через пространство имен внешней библиотеки (в качестве примера возьмем API Google Books здесь).

Код примера приложения:

 import React, { useEffect, useState } from 'react'

function App() {
  const [loaded, setLoaded] = useState(false);

  useEffect(() => {
       const scriptTag = document.createElement('script');
       scriptTag.src = 'http://google.com/books/jsapi.js';
       scriptTag.addEventListener('load', () => {
            console.log('loaded!');
            setLoaded(true);
       });
       document.body.appendChild(scriptTag);
  }, []);

  useEffect(() => {
       if (!loaded) {
            console.log('not loaded yet');
            return;
       };
       let google: any;
       console.log(google.books);
  }, [loaded]);

  return (
       <div>Hello World</div>
  )
}

export default App; 

Ошибка, вызванная приложением в моем браузере:

введите описание изображения здесь

При выполнении той же команды через консоль браузера после отображения страницы она работает нормально. Я не уверен, что меня здесь обманывает состояние гонки или что-то подобное, но я предполагал, что с помощью крючка useEffect с загруженным состоянием я смогу избежать таких побочных эффектов.

Anyone having an idea what I’m doing wrong?