I was following using-firebaseauth-with-local-state to implement authentication in my react app but I am using functional components and hooks. How am I supposed to implement the componentDidMount() and componentWillUnmount()?
Here is the code I have in the Login.jsx component:
import React, { useState, useEffect } from 'react'
import StyledFirebaseAuth from "react-firebaseui/StyledFirebaseAuth";
import firebase from "firebase";
// Configure Firebase.
const config = {
apiKey: "myapikey",
authDomain: "mydomain.firebaseapp.com"
// ...
};
firebase.initializeApp(config);
// Configure FirebaseUI.
const uiConfig = {
// Popup signin flow rather than redirect flow.
signInFlow: "popup",
// Redirect to /signedIn after sign in is successful. Alternatively you can provide a callbacks.signInSuccess function.
signInSuccessUrl: "/",
// We will display Google and Facebook as auth providers.
signInOptions: [
firebase.auth.GoogleAuthProvider.PROVIDER_ID,
firebase.auth.FacebookAuthProvider.PROVIDER_ID
],
callbacks: {
// Avoid redirects after sign-in.
signInSuccessWithAuthResult: () => false
}
};
export default function Login() {
const [signedIn, setSignIn]= useState(false);
useEffect(() => {
return () => {
const unregisterAuthObserver = firebase.auth().onAuthStateChanged(
(user) => setSignIn({isSignedIn: !!user})
);
unregisterAuthObserver();
console.log("Sdd")
};
})
if (!signedIn) {
return (
<div>
<h1>My App</h1>
<p>Please sign-in:</p>
<StyledFirebaseAuth
uiConfig={uiConfig}
firebaseAuth={firebase.auth()}
/>
</div>
);
}
return (
<div>
<h1>My App</h1>
<p>Welcome {firebase.auth().currentUser.displayName}! You are now signed-in!</p>
<a onClick={() => firebase.auth().signOut()}>Sign-out</a>
</div>
);
}