์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ํ์ค
- ๋ถํธ์บ ํ
- type
- ๋ณ์
- ๋ด์ผ๋ฐฐ์
- API
- ๋ฆฌ์กํธ
- Firebase
- ํ๋ก ํธ์๋
- ์ฝ๋ฉ
- native
- wil
- Redux
- PROJECT
- ์๋ฌ
- ํจ์
- ๊ฐ๋ฐ์
- ํ๋ก์ ํธ
- K-Digital
- rn
- ์๊ณ ๋ฆฌ์ฆ
- react
- ํ์
- NEXT
- ์จ๋ผ์ธ
- ๋ด์ผ๋ฐฐ์์บ ํ
- ์๋ฐ์คํฌ๋ฆฝํธ
- JavaScript
- JS
- trainning
- Today
- Total
Frontend ๊ฐ๋ฐ์ - hyo.loui
Project : MZL - ํ์๊ฐ์ ๋ณธ๋ฌธ
๐ฏ๋ชฉ์ :
Firebase - Authentication : ํ์๊ฐ์ ๊ธฐ๋ฅ ํ์ต ๋ฐ ์ ์ฉ >> Firebase : FireStore ์ฐ๊ฒฐ
๐คข ์ค๋ฅ ํด๊ฒฐ :
- ์คํฌ๋กค ๋ฌธ์ <KeyboardAwareScrollView/> ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ๊ทธ๋ก ํด๊ฒฐ
- ํด๋จผ์๋ฌ..
1. UI Layout ๋ง๋ค๊ธฐ
UI๋ฅผ ๋ง๋ค๋ฉด์ ํค๋ณด๋ ํ์ฑ ์์ ๋์ด๊ฐ ๊ณ ์ ๋์ด์๋ ์ด์๋ก
์คํฌ๋กค์ด ๋์ง์์ <KeyboardAwareScrollView/> ๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค..
์ด ๋ฌธ์ ๋ก ํผ๋ธ๋ฆฌ์ ๋ก ์ฌ์งํ๋ ์ง์ฅ์์ ๊ณจ๋จธ๋ฆฌ๋ฅผ ์ฉ์ ์ ์ด ์๋๋ฐ
ํ์์ค ํ๋ถ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ์ฒ ํด์ฃผ์ ์ ์์ฃผ ๊ฐ๋จํ๊ฒ ํด๊ฒฐ๋์๋ค.. (์๋ฌ ํด๊ฒฐ ์ฐธ๊ณ )
๊ทธ๋ ๊ฒ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๊ฐ์ ธ์จ ํ๊ทธ๋ก ์์๋ฅผ ๊ฐ์ธ์ฃผ์๊ณ ,
ํฌ๊ฒ ๋๋ค์, ์ด๋ฉ์ผ, ๋น๋ฐ๋ฒํธ, ๋น๋ฐ๋ฒํธ 2์ฐจ ํ์ธ
๋ถ๋ถ์ผ๋ก ๋๋์๋ค
ํ์ง๋ง ํ๋ก์ ํธ ๊ธฐ๋ฅ์ฌํญ์ผ๋ก
์ ๋ ฅ๊ฐ์ ๋ํ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํตํด ๋ฉ์ธ์ง๋ฅผ ์ ๋ ฅํด์ฃผ๋ Text๊ฐ ํ์ํด์
setState๋ฅผ ํ์ฉํด Text ๋ฅผ ๋ฏธ๋ฆฌ ๋ฃ์ด ์ฃผ์๋ค ( ์๋ ์์ธ๋ด์ฉ ์์ฑ )
2. ์ ํจ์ฑ ๊ฒ์ฌ
์์ฒ๋ผ ํด๋น ๋ด์ฉ์ ๊ฐ์ด ์๋์ํ ์ฆ, false == !state๋ฅผ ํ์ฉํด์
๋น๊ฐ์ ๋ํ ์ ํจ์ฑ๊ฒ์ฌ๋ฅผ ์งํํ๊ณ ,
๋น๊ฐ์ ๋ํ ํฌ์ปค์ค๋ฅผ ์งํ์์ผ์ฃผ๊ธฐ ์ํด useRef Hook์ ์ฌ์ฉํด์
ํด๋น TextInput ํ๊ทธ์ focus() ํจ์๋ฅผ ์คํ ์์ผ ์ฃผ์๋ค.
๋๋จธ์ง๋ ๋ณด์ด๋ ๋ฉ์ธ์ง์ ๊ฐ๋ค
์ฌ๊ธฐ์ ๋ด๊ฐ ๋ง๋ค์ด ์ฌ์ฉํ alertTextTimer ํจ์๋ฅผ ์๊ฐํ๊ฒ ๋ค
์์์ ์ธ๊ธํ๋ ๋ถ๋ถ์ ์ ํจ์ฑ๊ฒ์ฌ ๋ฉ์ธ์ง๋ฅผ ๋ฐ๋๋ก
state๋ฅผ ์ธ์๋ก๋ฐ์ ํ ์คํธ๋ก update๋ฅผ ์์ผ์ฃผ์๊ณ ,
setTimeout์ ํตํด ํด๋น ํ
์คํธ๋ 3์ด๊ฐ ์ง๋๋ฉด ์ฌ๋ผ์ง๋๋ก ํด์ฃผ์๋ค
3. authentication >> ํ์๊ฐ์ api
Authentication์ API ์ธ createUserWithemailAndPassword ํจ์๋ฅผ ์ฌ์ฉํด ํ์๊ฐ์ ์ ์งํ์์ผฐ๋ค.
Authentication์ ์ฐ๊ฒฐํ ๋ณ์์ธ auth์
state๋ก TextInput ์์ ๋ฐ์์ค๋ email ๊ณผ password
์ด๋ ๊ฒ 3๊ฐ๋ฅผ ์ธ์๋ก ๋ฐ์์ค๊ณ
API๊ฐ ์ ์ ์๋ํ์ ๋,
updateProfile ์ด๋ผ๋ API๋ก ํด๋น ์ ์ ์ ํ๋กํ์ ๋๋ค์์ ์ ๋ฐ์ดํธ ์์ผ์ฃผ์๋ค.
์ฌ๊ธฐ์ email๊ณผ password, displayName ์ es6 ๋ฌธ๋ฒ์ด ์ ์ฉ๋์ด
๊ธฐ์กด์ email: email ์ ๋ฐ๋ณตํ์ง ์์๋ ์์์ ๋ค์ด๊ฐ๋๋ก
ํค์ ๋ฐธ๋ฅ๊ฐ ๋์ผํ๋ค๋ฉด
ํจ์ถํ์ ์ธ์งํด ์๋์ผ๋ก ์์๊ฐ์ด ํ ๋นํด ์ค ์ ์๋ค.
๋ํ, .catch๋ฌธ์ ์ด์ฉํด
์๋ฌ๋ฅผ ์ ํจ์ฑ๊ฒ์ฌ์์ ํ์ฉํ ํจ์๋ฅผ ์ ์ฉํ์ฌ
์ด๋ ํ ์๋ฌ๊ฐ ๋ฌ๋์ง๋ฅผ ๋ช ํํ๊ฒ ์๋ ค์ค ์ ์์๋ค
4. ํ์๊ฐ์ ์ ์์๋
์๋์ด ์ ์์ ์ผ๋ก ์ด๋ฃจ์ด ์ง๋ค๋ฉด
.then ํจ์๋ค์ด ์๋๋ ๊ฒ์ด๋ค
๊ทธ๋์ ํ์๊ฐ์ ์ด ์๋ฃ๊ฐ ๋๋ฉด ux์ ์ผ๋ก ํธ๋ฆฌํ๋๋ก
reset ํจ์๋ฅผ ํ์ฉํด ๋ค์ Home ์ ์ํ๋ก ๋์๊ฐ๊ฒ ํด์ค๋ค
์ด ์ ์๋ navigate๋ฅผ ์ฌ์ฉํด์ Home์ผ๋ก ํธ๋ค๋ง์ ํ์๋๋ฐ
tabs ๋ถ๋ถ์ด ๋์ค์ง ์๊ณ , ์ปดํฌ๋ํธ๋ง ๋ ๋๋ง ๋์๋ ํ์์ผ๋ก
๋ค์ reset์ ํ์ฉํด refactoring์ ์งํํ๋ค!
+ ์ค๋ฅ ํด๊ฒฐ :
before - ํด๊ฒฐ ์
after - ํด๊ฒฐ ํ
+ ์ค๋ฅ ํด๊ฒฐ ๋ฐฉ๋ฒ:
https://github.com/APSL/react-native-keyboard-aware-scroll-view
๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ณต์ ๊นํ๋ธ์ ์์ธํ ๋ด์ฉ์ด ๋์์๋ค.
์งง๊ฒ ์์ฝํ์๋ฉด,
npm i react-native-keyboard-aware-scroll-view --save
- ์ ๋ช ๋ น์ด๋ฅผ ํตํด ์ธ์คํจ
- ์ฌ์ฉํ๊ณ ์ ํ๋ ์ปดํฌ๋ํธ์์ import { KeyboardAwareScrollView }
- import ํ ํ๊ทธ๋ก ์์ ํ๊ทธ ๊ฐ์ธ์ฃผ๋ฉด ๋!
์ต์ข ์ ๋ฆฌ
- ์ ํจ์ฑ๊ฒ์ฌ์ ํต๊ณผ๋์ง ์๋๋ค๋ฉด ์คํํ alertTextTimer() ํจ์ ๋ง๋ค์ด์ฃผ์๋ค ( ๋ฉ์ธ์ง ๋ณด์ฌ์ฃผ๊ณ ์ฌ๋ผ์ง๊ธฐ )
๊ทธ ํ useRef Hook์ ํ์ฉํด focus() ๊ฐ ์คํ๋์ด ํด๋นํ๋ TextInput์ผ๋ก ์๋์ ์ผ๋ก ์ปค์๊ฐ ์๊ธฐ๊ฒ ํ๋ค - createUserWithemailAndPassword ํจ์๋ auth key / email / password ์ด ์ธ๊ฐ๊ฐ ํ์ ๊ฐ์ด๋ค
- ๋๋ค์์ธ displayName ์ ํจ๊ป ์ ๋ฌํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ํ์๊ฐ์ ์งํ updateProfile ํจ์๋ก ๊ฐ์ด ๋๋ค์์ ๋ฃ์ด์ฃผ์๋ค
- ํ์๊ฐ์ ์ด ์๋ฃ๊ฐ ๋๋ฉด ux์ ์ผ๋ก ํธ๋ฆฌํ๋๋ก reset ํจ์๋ฅผ ํ์ฉํด ๋ค์ Home ์ ์ํ๋ก ๋์๊ฐ๊ฒ ํด์ค๋ค
- KeyboardAwareScrollView ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ํค๋ณด๋ ํ์ฑ์ ๋์ด ์ด์ ๊ฐ๋จํ๊ฒ ํด๊ฒฐ
'Project' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Project : MZL - ๋ก๊ทธ์์, ๋ง์ดํ์ด์ง ์ด๋ ์ ์๋ฌํด๊ฒฐ (0) | 2023.01.11 |
---|---|
Project : MZL - ๋ก๊ทธ์ธ (0) | 2023.01.11 |
Project : helprogrammers - ์๊ฐ(์ด๋์ฅ) (0) | 2022.12.28 |
Project : helprogrammers - ์์ธ ํ์ด์ง (0) | 2022.12.26 |
Project : helprogrammers - S.A (0) | 2022.12.22 |