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) ์˜ค๋ฅ˜๋ฐœ์ƒ ์›์ธ ...

<span title='2022-02-12 19:32:34 +0900 KST'>February 12, 2022</span>&nbsp;ยท&nbsp;2 min&nbsp;ยท&nbsp;AswinBlue

React basic

React basic ๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ค์น˜ ๋ฐ ์‹คํ–‰ node.js ๋กœ ๋งŒ๋“ค์–ด์ง„ create-react-app ํˆด์„ ์ด์šฉํ•˜๋ฉด ์†์‰ฝ๊ฒŒ react ์•ฑ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. npm์„ ์„ค์น˜ํ•˜๊ณ  ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ create-react-app์„ ์„ค์น˜ํ•œ๋‹ค. npm install -g create-react-app ์›ํ•˜๋Š” ๊ฒฝ๋กœ์— ๋“ค์–ด๊ฐ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. create-react-app <NAME> : NAME ๊ฒฝ๋กœ์— ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์ฃผ์˜ : ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ํด๋”๋ช…์€ ๋Œ€๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์‹คํ–‰ npm run start ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด localhost:3000์—์„œ ์›นํŽ˜์ด์ง€๋ฅผ ํผ๋ธ”๋ฆฌ์‹ฑํ•œ๋‹ค. ๊ธฐ๋ณธ ์„ค์ • ์‹คํ–‰ ํฌํŠธ package.json ํŒŒ์ผ์—์„œ "proxy": "http://localhost:3000/" ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋ฉด ์‹คํ–‰์‹œ ํฌํŠธ๋ฅผ 3000์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ๋ณธ ๊ตฌ์กฐ /public/index.html ์—์„œ ๊ธฐ๋ณธ ํ™”๋ฉด ๊ตฌ์„ฑ โ€˜rootโ€™ ์ด๋ฆ„์œผ๋กœ ๋œ division์ด ์žˆ๋Š”๋ฐ, ์ด division์— ๋Œ€ํ•œ ์„ค์ •์€ javascript๋กœ ์ •์˜๋˜์–ด์žˆ๋‹ค. src ๊ฒฝ๋กœ์— javascriptํŒŒ์ผ๋“ค ๊ตฌ์„ฑ โ€˜index.jsโ€™ ์— ๋ฉ”์ธ ํ™”๋ฉด์— ์‚ฌ์šฉ๋œ ๊ฐ์ฒด๊ฐ€ ์ •์˜๋˜์–ด ์žˆ๋‹ค. ์•„๋ž˜ ๋‚ด์šฉ์€ id๊ฐ€ โ€˜rootโ€™ ์ธ division์— โ€˜Appโ€™์„ ์ ์šฉํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ...

<span title='2021-08-23 18:46:22 +0900 KST'>August 23, 2021</span>&nbsp;ยท&nbsp;19 min&nbsp;ยท&nbsp;AswinBlue