我正在尝试启用使用 firebaseui 登录我的站点。它需要一个 firebaseui_auth_container
来呈现登录表单,但我在启动时没有那个 div,因为它在模式弹出窗口中。这是我的代码:
constructor() {
...
// Initialize the FirebaseUI Widget using Firebase.
var ui = new firebaseui.auth.AuthUI(Firebase.auth());
var uiConfig = {
'signInSuccessUrl': 'url.com',
'signInOptions': [
// Leave the lines as is for the providers you want to offer your users.
Firebase.auth.GoogleAuthProvider.PROVIDER_ID,
Firebase.auth.FacebookAuthProvider.PROVIDER_ID,
Firebase.auth.TwitterAuthProvider.PROVIDER_ID,
Firebase.auth.GithubAuthProvider.PROVIDER_ID,
//Firebase.auth.EmailAuthProvider.PROVIDER_ID
],
'signInFlow': 'popup'
};
ui.start('#firebaseui-auth-container', uiConfig)
}
render() {
<div className="my-logo"><button style={{backgroundColor: 'transparent', border: '0px',
font: "inherit", color: "#eee", cursor:"pointer"}}
onClick={this.openLogin.bind(this)}>Login</button><br/></div>
<Modal
aria-labelledby='modal-label'
style={modalStyle}
backdropStyle={backdropStyle}
show={this.state.showLoginModal}
onHide={this.closeLogin.bind(this)}
>
<div id="firebaseui-auth-container" style={dialogStyle()} />
</Modal>
}
具有适当 ID 的 div 只有在我单击标题中的“登录”按钮后才会存在。现在,当我单击它时,我得到一个空的模式框。有没有办法让 firebaseui “等待”div,或者让 div 在启动时“存在”,这样 firebaseui 就不会提示? (现在,很明显,它会抛出一个错误,说它找不到小部件)。
最佳答案
在 componentDidMount()
方法而不是构造函数中初始化 firebaseui
我在渲染函数中没有看到返回语句。如果你错过了,修改如下:
render(){
return (
<div>
... contents here
</div>
)
}
关于javascript - 将 firebaseui 身份验证与模式弹出窗口(ReactJS)一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41756557/