Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript google在react中未定义?_Javascript_Reactjs_Google Maps - Fatal编程技术网

Javascript google在react中未定义?

Javascript google在react中未定义?,javascript,reactjs,google-maps,Javascript,Reactjs,Google Maps,当我调用window和console log时,我会得到一个google道具,如您所见: 然而,当我试图调用window.google时,我没有定义。我在这里遗漏了什么吗?因为这看起来像谷歌地图API,这可能是一个加载顺序问题 确保拉入谷歌地图标签的位于运行代码的标签之前 如果这不是问题所在,您可能需要用某种ready()函数包装React代码,以强制它等待Google代码准备就绪。稍后回答此问题,但您可以简单地将此常量添加到React组件的顶部,如下导入语句: const google =

当我调用window和console log时,我会得到一个google道具,如您所见:


然而,当我试图调用
window.google
时,我没有定义。我在这里遗漏了什么吗?

因为这看起来像谷歌地图API,这可能是一个加载顺序问题

确保拉入谷歌地图标签的
位于运行代码的标签之前


如果这不是问题所在,您可能需要用某种
ready()
函数包装React代码,以强制它等待Google代码准备就绪。

稍后回答此问题,但您可以简单地将此常量添加到React组件的顶部,如下导入语句:

const google = window.google = window.google ? window.google : {}
它a)创建一个变量,然后b)使用三元运算符确定window.google是否已加载,c)如果未加载,则将google指定为空对象。
H/t至@blackmamba。查看其他内容。

嘿,我在尝试实例化一个新窗口时遇到了类似问题。google.maps.Map发现这个解决方案对我很有帮助

  • 在声明
    标记时,给它一个标识符,以便稍后在组件中获取它

  • 在安装组件时,在Google脚本上设置一个
    load
    事件侦听器,并等待它准备好后再执行更多代码

  • 一个警告是,如果您的脚本是在这个组件挂载之前加载的(这是我们首先希望的),并且设置了事件侦听器,那么什么都不会发生。我们希望通过
    if(window.google)


  • 您是否确保在引用Google API库之后而不是之前执行该调用?请尝试
    this.Google
    componentDidMount() {
      const googleScript = document.getElementById('google-map-script')
    
      if (window.google) {
        // All is good! Carry on 
      }
    
      googleScript.addEventListener('load', () => {
        // Patiently waiting to do the thing 
      })
    }