你如何处理 React 组件中的 script.src URL 回调?

IT技术 javascript reactjs google-maps
2021-04-28 12:15:49

我似乎无法弄清楚如何根据谷歌的脚本 GET 请求来触发一个函数。

export class Map extends Component {

    constructor(props) {
        super(props);
        this.state = {};
    };

    componentDidMount = function () {
        console.log(google); // Uncaught ReferenceError: google is not defined
    };

    scriptInitialized = function () {
        console.log('scriptInitialized');
    };

    render() {

        let scriptInitialized = function () {
            console.log('scriptInitialized');
        };

        return (
            <div>
                <script type="text/javascript">/* nothing in here works */</script>
                <script src="https://maps.googleapis.com/maps/api/js?key=key&callback=scriptInitialized" defer async={true}/>
            </div>

        );
    }
}

我似乎无法让callback=scriptInitialized工作。如果我将与 src 相关的所有 JavaScript 保留在我的项目的 index.html 中,它就会起作用,但这会使事情变得更加复杂。能够将事情集中到这个组件上会很棒。

我知道谷歌地图有第三方库,但如果可能的话,我想避免使用它们。

这样做的唯一目标是在脚本完成加载时触发一个事件,这样我就可以使用它而不会触发"Uncaught ReferenceError: google is not defined"

1个回答

来自 google api 的回调正在寻找window.scriptInitialized. 您已scriptInitialized绑定到组件,而不是窗口。这是有关如何在 React 中的窗口上添加函数链接