Firebase_react
Firebase with React react์์ firebase๋ฅผ ํ์ฉํ๋ ๋ฐฉ๋ฒ firebase SDK๋ฅผ ์ค์นํ๊ฑฐ๋ ์น์์์ ์ค์น์์ด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ firebase ๊ธฐ๋ณธ์ ์ฐธ์กฐ ์ธ์ฆ (Auth) firebase ๋ก ๊ณ์ ์์ฑ ๋ฐ ๋ก๊ทธ์ธ firebase API๋ฅผ importํ์ฌ ์ฌ์ฉ <AppFirebase.js> import firebase from "firebase/compat/app"; import "firebase/compat/auth"; const firebaseConfig = { apiKey: process.env.REACT_APP_API_KEY, authDomain: process.env.REACT_APP_AUTHDOMAIN, projectId: process.env.REACT_APP_PROJECTID, storageBucket: process.env.REACT_APP_STORAGEBUCKET, messagingSenderId: process.env.REACT_APP_MESSAGINGSENDERID, appId: process.env.REACT_APP_APPID }; export default firebase.initializeApp(firebaseConfig); export const authService = firebase.auth(); AppFirebase.js ๋ฅผ ํ์ฉํ์ฌ business logic์ ํ์ํ ๋ก๊ทธ์ธ / ํ์๊ฐ์ ๊ธฐ๋ฅ์ ๊ตฌํ <Auth.js> import { authService } from "../components/AppFirebase"; const data = await authService.createUserWithEmailAndPassword(email, password) // email, passwd๋ก ๊ณ์ ์์ฑ const data = await authService.signInWithEmailAndPassword(email, password) // email, passwd๋ก ๋ก๊ทธ์ธ createUserWithEmailAndPassword / signInWithEmailAndPassword ์คํ ์ดํ authService.currentUser๋ฅผ ์ฐธ์กฐํ๋ฉด user ์ ๋ณด๋ฅผ ๋ฐ์์ฌ ์ ์๋ค. ํ์ง๋ง, authService.currentUser ์ ๋ณด๋ฅผ ๊ฐฑ์ ํ๋๋ฐ๋ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค. firebase API์์๋ observer๋ฅผ ๋ฑ๋กํ์ฌ currentUser์ ๋ณ๊ฒฝ ์์ ์ ํ์ธํ ์ ์๋ค. currentUser ๋ณ๊ฒฝ์์ ์ ํน์ ํจ์ ๋์ user ์ ๋ณด๊ฐ ๊ฐฑ์ ๋ ์์ ์ ํน์ ๋์์ ์ํ๋ค๋ฉด, ์๋์ ๊ฐ์ด onAuthStateChanged ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค. authService.onAuthStateChanged((user) => { /* something to do */ }}); ๋ก๊ทธ์์ authService.signOut() ํจ์๋ฅผ ํธ์ถํ์ฌ ๋ก๊ทธ์์์ด ๊ฐ๋ฅํ๋ค. ์ฐธ๊ณ ๋ก ํฌ๋กฌ ์น ๋๋ฒ๊น ํ๋ฉด์์ โApplicationโํญ์ ๋ค์ด๊ฐ์ IndexedDB -> firebaseLocalDb ์์ ๋ด์ฉ์ ๐ซ๋ฒํผ์ผ๋ก ์ญ์ ํด ์ฃผ๋ฉด ๋ก๊ทธ์ธ ์ ๋ณด๊ฐ ์ฌ๋ผ์ง๋ค. ์๋ฌ authService์ ํจ์(createUserWithEmailAndPassword, signInWithEmailAndPassword, โฆ) ์ฌ์ฉ์ ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก, try, catch๋ฌธ์ผ๋ก ๋ฌถ์ด์ ์ฌ์ฉํ๋ค. try { let data data = await authService.createUserWithEmailAndPassword(email, password) } catch(error) { console.log(error.code) // ์๋ฌ์ ์์ธ์ด ์ฝ๋ ํํ๋ก ์ถ๋ ฅ๋๋ค. console.log(error.message) // ์๋ฌ์ ์์ธ์ด ๋ฉ์์ง ํํ๋ก ์ถ๋ ฅ๋๋ค. } ref) ์ค๋ฅ๋ฐ์ ์์ธ ...