์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ์จ๋ผ์ธ
- ํ๋ก ํธ์๋
- Redux
- ๊ฐ๋ฐ์
- ํจ์
- ์๊ณ ๋ฆฌ์ฆ
- react
- wil
- type
- JS
- rn
- ์ฝ๋ฉ
- ๋ด์ผ๋ฐฐ์์บ ํ
- ๋ถํธ์บ ํ
- JavaScript
- ๋ด์ผ๋ฐฐ์
- ์๋ฌ
- ํ๋ก์ ํธ
- trainning
- API
- ํ์
- native
- K-Digital
- PROJECT
- ๋ฆฌ์กํธ
- ์๋ฐ์คํฌ๋ฆฝํธ
- ๋ณ์
- NEXT
- Firebase
- ํ์ค
- Today
- Total
Frontend ๊ฐ๋ฐ์ - hyo.loui
๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ - CRUD: Create API, Firebase ์ฐ๊ฒฐํ๊ธฐ ๋ณธ๋ฌธ
๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ - CRUD: Create API, Firebase ์ฐ๊ฒฐํ๊ธฐ
hyo.loui 2023. 1. 2. 01:45๐ฏ๋ชฉ์ :
CRUD : Create API ์ถ๊ฐ, Firebase : FireStore ์ฐ๊ฒฐ
1. Layout ๋ง๋ค๊ธฐ
์์ ๊ฐ์ ๋ ์ด์์์ ๋ง๋ค์ด ๋ณด๊ฒ ๋ค!
์ฌ์ค 'ํฌ๋๋ฆฌ์คํธ'๋ฅผ ๋ง์ด ๋ง๋ค์ด์ ์บ ํ ์ปค๋ฆฌํ๋ผ, ํ์ต์ ๋ค์์ฑ์ ์๋ฌธ์ ์ด ์์์ง๋ง,
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์ ๊ธฐ๋ณธ ์์ง์ธ CRUD์ ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๊ฐ์ฅ ํต์ฌ์ ์ผ๋ก ๋ค๋ฃจ๋ ํ์ต์ด๋ผ๊ณ ์๊ฐํ๋ค.
๋ค์ํ๋ฒ ๋ณต์ตํ์๋ฉด,
ios์์ ์นด๋ฉ๋ผ ์์ญ์ผ๋ก ์ธํด layout์ด ๊ฐ๋ ค์ง๋ ๋ฌธ์ ๋ก <safeAreaView> ํ๊ทธ๋ฅผ ์ฌ์ฉํด์ค๋ค!
์๋๋ก์ด๋์์๋ ๋ฌธ์ ๊ฐ ์์ง๋ง ์ฒซ ์์
์ ๋ณดํต ios๋ก ์์
์ ํด์ผ 2์ค ์์
์ด ์ค์ด๋ ๋ค
๊ทธ๋์ '๋
ธ์น ์ ๊ฑฐ' ๋ผ๋ ์ฃผ์์ผ๋ก <safeAreaView> ํ๊ทธ ์ฌ์ฉ์ ์ด์ ๋ฅผ ์ฃผ์์ผ๋ก ์ค๋ช
ํ๋ค.
ํฌ๊ฒ ๋ ์น์
์ผ๋ก ๋๋ ์ ์๋๋ฐ ์ ์ฌ์ง์์ ์์ ์๋ฏ,
๊ณ ์ ์์ญ(Fiexd Part) & ์คํฌ๋กค ์์ญ(Scrollalbe Part) ์ด๋ค
๊ณ ์ ์์ญ์ ์น์์์ ํค๋์ญํ ๊ณผ ๊ฐ์ด ๋ค๋ฅธ ์์ญ์ด ์คํฌ๋กค์ ํด๋ ๊ณ ์ ๋์ด์๊ฒ ๋๋ค
<View> ํ๊ทธ์ ๊ธฐ๋ณธ ์์ฑ์ด๋ค RN ์์๋ <div> ํ๊ทธ์ฒ๋ผ ๋ง์ด ์ฌ์ฉํ๋ค.
ํ์ง๋ง, ์คํฌ๋กค์ด ๋๋ ค๋ฉด ๋ค๋ฅธ ํ๊ทธ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค
๋ฐ๋ก <ScrollView> ํ๊ทธ ์ด๋ค.
๋ด๋ถ ์์ญ์ ๊ธฐ๋ณธ ์์ฑ์ flexdirection : column ์ด๊ธฐ ๋๋ฌธ์
child ํ๊ทธ๋ค์ ์๋์ ์ผ๋ก scroll์ด ๋๋ค.
๋ํ, button ํ๊ทธ๋ ์คํ์ผ ์ ์ฉ์ด ์๋์ด ์ ์ฌ์ฉํ์ง ์๋๋ค ๋์ฒด๋ก <TouchableOpacity> ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ค
์์ด์ฝ์ ์๋ ๋งํฌ์์ ์ํ๋ ์์ด์ฝ์ ๊ฐ์ ธ์๋ค
https://icons.expo.fyi/
ํด๋น ์ฌ์ดํธ์์ ๋ง์์ ๋๋ ์์ด์ฝ์ ์ ํ ํ,
๋ ๋๋ง ํ ์ปดํฌ๋ํธ์์
import ๊ตฌ๋ฌธ์ ์ ์ฉ์ํค๊ณ , ๋ณต์ฌํด์จ ์ปดํฌ๋ํธ๋ฅผ ๋ถ์ด๋ฉด
์์ฃผ ๊ฐํธํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
ํด๋น ํฌ์คํ
์์๋ create ๋ถ๋ถ์ ์ค๋ช
ํ๊ธฐ์
์๋์์ ์ค๋ช
ํ๊ฒ ๋ค
2-1. Create
์ฐ์ ์ปดํฌ๋ํธ ๋ด๋ถ์์ ์ฌ์ฉํ state ๋ 2๊ฐ์ง ์ด๋ค
- TextInput์ด ๋ณ๊ฒฝ๋ ๋ ๋ง๋ค ๊ฐ์ ์ ์ฅํ๋ state (text)
- ์ํฐ๋ฅผ ๋๋ ์ ๋ ์ ์ฅ๋ ๋ฐฐ์ดํํ์ state (todos)
๊ทธ๋ฆฌ๊ณ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ newTodos ๋ณ์๋ฅผ ์ง์ ํด ์ฃผ์๊ณ ,
isDone์ ๋์ค์ ์ฒดํฌ ๋ฒํผ์ ๋๋ ์ ๋ ์ฒดํฌ๋ฅผ ์ํด ๋ฏธ๋ฆฌ ํ ๋นํ๊ณ ,
isEdit๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๋์ค์ ์์ ๋ฒํผ์ ๋๋ ์ ๋ ๊ฐ์ง๋ฅผ ์ํด ๋ฏธ๋ฆฌ ํ ๋นํ๋ค.
RN ์์๋ ๊ธฐ์กด react ์ ๋ค๋ฅด๊ฒ onChage๊ฐ ์๋๊ณ onChageText๋ฅผ ์ฌ์ฉํ๋ฉฐ,
e.target.value ๋ฅผ ๋๊ฒจ์ฃผ์ง ์์๋ ์๋์ ์ผ๋ก setState ๊ฐ ๋๋ ์์ญ์ value๋ฅผ ๋๊ธด๋ค
๋, onSubmitEditing์ onSubmit ๊ณผ ๊ฐ๊ณ form ํ๊ทธ๊ฐ ์์ด๋ ์๋ํ๋ค
RN ๋ฌ๋ฌ ํ๋ค....
2-2. ์๋ ํ ์คํธ
TextInput์์ value์ ๊ฐ์ด ์ ์์ ์ผ๋ก ๋ณ๋ํ๋์ง ์ฝ์์ ์ฐ์ด๋ณด๊ฒ ๋ค.
์์ฃผ ์ ์ฐํ๋ค onSubmitEditing๋ ํ์ธ ํด ๋ณด๊ฒ ๋ค
๋ฐฐ์ด์ ์ ์ ์ฅ์ด ๋๊ณ ์๋ค!
์ด์ ์ด ๋ฐ์ดํฐ๋ฅผ firebase๋ก ์ฐ๊ฒฐํด์
firestore์ DB๋ก ์ ์ฅํด๋ณด์
3. Conect firestore
์ด์ ๋ด๋ถ ๋ณ์์์๋ง ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ๋ฅผ firestore์ ์ฐ๊ฒฐํด๋ณด๊ฒ ๋ค
์๋ ๊ณต์๋ฌธ์๋ฅผ ์ฐธ๊ณ ํด์ ์ฐ๊ฒฐํ๋ค
https://firebase.google.com/docs/firestore/quickstart?hl=en&authuser=0
์ ์ฝ๋๋ ์ ํด์ง ์์์ด๊ธฐ ๋๋ฌธ์ ๋ด๊ฐ ๋ฐ๋ก ์๋ณด๊ฑฐ๋ ๊ฑด๋ค์ด์ง ์์์ง๋ง, ์์๋ ์๋์ ๊ฐ๋ค
- import Firebase API
- ์์ฑํ project key ์์ฑ
- api์ key ์ฐ๊ฒฐ
- Firesotre์ ํด๋น๋ด์ฉ ์ ์ฉํ์ฌ db์ ์ ์ฅํ ๊ณต๊ฐ ์์ฑ
firebase >> firestore ์ ์ํ์ด๋ค
๋ด๊ฐ ๋ง๋ค์ด์ค newTodos์์ ๋ง๋ค์ด์ค ๋ด์ฉ์ด ์ ๋ค์ด์๋ค!!
+ FireStore ์ฌ์ฉ ์ ์ค์ (๊ท์น ์์ )
false = true
๋ฐ๊ฟ์ฃผ๊ธฐ๋ง ํ๋ฉด ๋๋ค!
์ต์ข ์ ๋ฆฌ
- ๋ด๊ฐ ์๊ฐํ๊ธฐ์ ํฌ๋๋ฆฌ์คํธ๋ CRUD์ ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๊ฐ์ฅ ํต์ฌ์ ์ผ๋ก ๋ค๋ฃจ๋ ํ์ต.
- ๊ธฐ์กด ๋ฆฌ์กํธ์ ๋ฆฌ์กํธ๋ค์ดํฐ๋ธ๋ ์ฌ์ฉํ๋ ํ๊ทธ๊ฐ ์กฐ๊ธ์ฉ ๋ค๋ฅด๋ค, ๋๋ฌธ์ ์ ํ์ธํด์ผํจ.
- ๊ธฐ์กด react ์ ๋ค๋ฅด๊ฒ onChage๊ฐ ์๋๊ณ onChageText๋ฅผ ์ฌ์ฉ.
- ์๋์ ์ผ๋ก setState ๊ฐ ๋๋ ๋ ธ๋์์ญ์ value๋ฅผ ๋๊ธด๋ค. e.target.value ์ํด๋ ๋จ!
- <form> ํ๊ทธ ์์ด <TextInput> ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ, onSubmit == onSubmitEditing ์ฌ์ฉ.
- Firebase ๋ด๋ถ FireStore ์ฌ์ฉ ์ ๊ท์น ์ค์