如何在React组件中引入百度地图API

发布于 2022-09-04 08:20:50 字数 1196 浏览 15 评论 0

引入了百度API,但是无法引入,代码如下:

...
componentWillMount() {
    const script1 = document.createElement("script");
    script1.src = "http://api.map.baidu.com/api?v=2.0&ak=xxx";
    script1.type = "text/javascript";
    script1.async = true;
    document.head.appendChild(script1);
    const script2 = document.createElement("script");
    script2.async = true;
    script2.type = "text/javascript";
    script2.src = "http://api.map.baidu.com/library/LuShu/1.2/src/LuShu_min.js";
    document.head.appendChild(script2);
}
...
componentDidMount() {
    _.extend(BMapLib.LuShu.prototype, {
        // do something
    })
}
...

error: BMapLib is not defined

求解

2016.12.22更新我的解决方案
在入口html判断需要引入API的页面是否需要引入百度API˜

example:

if (location.hash.indexOf('driver_map_found') > -1) {
    document.write('<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=uRIgQnOKFQ77LLvuI9WzNgri"><\/script>');
    document.write('<script type="text/javascript" src="http://api.map.baidu.com/library/LuShu/1.2/src/LuShu_min.js"><\/script>');
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

自我难过 2022-09-11 08:20:50

I think:
It's necessaty to check whether the script is included or not. u can check the global variables window.xxx.it's definitely not included:

if (window.xxx === 'undefined') {
  // include the script
}

u should put the script in componentDidMount or componentDidUpdate.the DOM must be ready in these two stages of the reactjs life circle, .

The thing is that add the onload handler to the script1 u created,it'll be called right after the script is loaded.

script1.onload = function() {
  // do what u want to initialize the third part module
}

非react插件,默认你的dom是准备好的,在引入这些插件的注意点就是DOM是否准备好

温柔女人霸气范 2022-09-11 08:20:50

你可以在html中引入,全局使用啊

时光清浅 2022-09-11 08:20:50

第一个http://api.map.baidu.com/api?... script的load状态为load后再去加载第二个script
最好给第一个script加上&callback=initialize

指尖凝香 2022-09-11 08:20:50

@纸上染了蓝 问题中更新了现在的处理方案

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文