2
我有它加載的JavaScript SDK這就好比一個功能:反應Redux的異步加載JavaScript的FB SDK
class Facebook{
constructor(){
window.fbAsyncInit =() => {
FB.init({
appId : 'myappID',
cookie : true,
xfbml : true,
version : 'v2.5'
});
}
if (typeof(FB) == 'undefined') {
((d, s, id) => {
let js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
})(document, 'script', 'facebook-jssdk');
}
}
}
export default Facebook
而且在我的組件如果用戶通過Facebook登錄我檢查。所以在我ComponentDidMount
我做這樣的事情......
let facebook = new Facebook()
console.log(FB)
FB.getLoginStatus(function(response){
if(response.status == "connected"){
//Do something
}
})
這裏同時FB
加載異步我console.log(FB)
首先調用。所以它給我錯誤FB
沒有定義。
但是,如果我做console.log(FB)
在ComponentWillUnmount
它不會給出錯誤,而是它會給出所需的輸出。
如何異步加載sdk
,然後只檢查FB.getLoginStatus
。
需要一些幫助......