在React中`Uncaught ReferenceError:未定义FB`

问题描述

我已将Facebook登录api添加到React应用

// index.html
<body>
  <div id="fb-root"></div>
  <script src="https://connect.facebook.net..." etc... />
  <script>
    const FB = window.FB;
    window.fbAsyncInit = function() {
      FB.init({etc...});
      FB.AppEvents.logPageView();
    }
  </script>
  etc...
  <div id="root"></div>
</body>

然后是React提供程序中的另一个

// SomeProvider.js
const SomeProvider = () => {
  useEffect(() => {
    window.FB.getLoginStatus((res) => {etc...});
  },[]);
  etc...
}

我收到的错误消息是未在SomeProvider.js中定义FB,然后为react-dom.production.min.js定义了另一条消息。

我不明白为什么。


更新

当我反复刷新时,有时不会出现该错误,这使我认为这是一个异步问题。似乎window.FB.getLoginStatus需要等待,直到FB.init中的index.html完成为止。我对这项评估正确吗?有什么建议吗?

解决方法

您可以尝试将[window.FB]添加为someprovide的useEffect的使用