๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
49
์บ๋ฆฐ๋Todo ํด๋ก ์ฝ๋ฉ - ๋ฌ๋ ฅ์ ์ ํ๋ ๋ ์ง์ ํ ์ผ๋ง ๋์ค๊ฒ ํ๊ธฐ
1. ์ ํ๋ ๋ ์ง๋ง ๋์ค๊ฒ ํ๊ธฐ (1) ๋ก์ง (2) ์ฝ๋ ๋ฆฌ๋ทฐ ๋ฐฐ์ด์ ๋ด์ฅ ํจ์์ธ filter๋ฅผ ์ด์ฉ. fiter๋ ๋ฐฐ์ด ์์ ํ๋ํ๋ ๋์
ํ์ฌ ํด๋น ๋ช
๋ น๋ฌธ์ ๋ํ์ฌ ์ฐธ์ธ ์์๋ค๋ก๋ง ์ ๋ฐฐ์ด์ ๋ง๋๋ ๊ธฐ๋ฅ์ ํ๋ค. (3) ์ถ๊ฐ์ ์ผ๋ก ๊ณต๋ถํ์ฌ ์์๋ธ ๊ฒ JS ์ Array Filter์ ๋ํ์ฌ ์ถ๊ฐ์ ์ผ๋ก ๊ณต๋ถ Array์ ๋ด์ฅํจ์ Filter๋ ์ฃผ์ด์ง ๋ฐฐ์ด์ ๊ฐ๋ค์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๊ทผํด์ callbackFn({}์์ ์ ํ์๋ ํจ์)์ ๋ฃ์ด๋ณด๊ณ ๊ทธ ๊ฒฐ๊ณผ๊ฐ true์ธ ์์๋ค๋ก๋ง ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ค์ด ๋ฐํํ๋ค. **callback์ ์๋ฏธ : ๋ค๋ฅธ ์ฝ๋์ ์ธ์๋ก ๋ค์ด๊ฐ ์๋ ์คํ์ด ๊ฐ๋ฅํ ์ฝ๋ ๋ฉ์ด๋ฆฌ **callback ํจ์๋ : ๋ค๋ฅธ ์ฝ๋์ ์ธ์๋ก ๋ค์ด๊ฐ ์คํ ๊ฐ๋ฅํ ํจ์
2023.04.12
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
Toggle๋ฒํผ, ๊พน ๋๋ฅผ ์ ์ญ์ , ์ถ๊ฐ ๋ฒํผ ๊ตฌํ
1. Toggle๋ฒํผ ๊ตฌํ (1) ๋ก์ง ์ค๊ณ๋ (2) ์ฝ๋๋ฆฌ๋ทฐ TodoList ์์ฒด๋ฅผ ๋๋ฅผ ์ ์๋๋ก ํ๊ธฐ ์ํด ์ ์ฒด๋ฅผ ๊ฐ์ธ๋ RootView๋ฅผ Pressable๋ก ๋ฐ๊พธ์ด ์ฃผ์๋ค. (3) ์ถ๊ฐ์ ์ผ๋ก ์์๋ธ ์ a. onPress ์์ฑ ๋ด๋ถ์ ํจ์๋ฅผ ์ ์ ๋ ํํ ใฑ. ๋ง์ฝ onPress์ ์ ํ๋ ํจ์๊ฐ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ๋ก ์ ๋ฌ ์ํ๋ ๊ฒฝ์ฐ // ์
๋ค ๊ฐ์ ๊ฐ๋ฅํจ. onPress(ExFunc) onPress(() => Ex.Func()) onPress(() => {return Ex.func()}) // ์ด๊ฑด ํ๋ฆฐ ๊ฒ. ์ต๋ช
ํจ์๋ก ์ ์ด์ฃผ๋ ค๋ฉด, ํจ์์ ๋งค๊ฐ๋ณ์ ๋ถ๋ถ๋ ๋ฌด์กฐ๊ฑด ์ ์ด์ค์ผ ํ๋ค. onPress(() => Ex.Func) ํ์ง๋ง ์ต๋ช
ํจ์ ํํ ()=> {} ๋ก ์ ์ด์ฃผ๋ฉด ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง ํ ๋๋ง๋ค ์..
2023.04.12
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
์บ๋ฆฐ๋์ to do list ๋ง๋ค๊ธฐ, ์ปดํฌ๋ํธ ์ ๋ฆฌ
๋จผ์ ์บ๋ฆฐ๋ ๋ฐ ๋ถ๋ถ์ To do List๋ฅผ flatList๋ก์ ๋ฃ๋๋ค. ์บ๋ฆฐ๋์ to do List๊ฐ ๋ฐ๋ก Scroll ๋๋ค๋ฉด ๊ทธ๊ฒ๋ ์ฌ์ฉ์์๊ฒ ๋ถํธํจ์ ์ค ๊ฒ์ด๋ค. ๊ทธ๋์ ํ๋์ FlatList์ ์บ๋ฆฐ๋์ Scroll์ด ๊ฐ์ด ์๊ฒ ๋ง๋ค์ด์ค์ผ ํ๋ค. (1)๋ฐ๋ผ์ ์ง๊ธ๊น์ง ๋ง๋ค์๋ ์บ๋ฆฐ๋ ๋ก์ง์ ํ๋์ ํ์ผ๋ก ๋ฐ๋ก ๋นผ์, toDoList FlatList์ ListHeaderComponent๋ก ๋ฃ์ด์ค ๊ฒ์ด๋ค. (2) ๊ทธ๋ฆฌ๊ณ ํ๋ฉด ๋ค์ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง๋ ๋ฃ์ด์ค ๊ฒ์ด๋ค. ์ด๋ ํ๋ฉด๊ณผ View ๊ฐ ๊ฒน์น ๋ ๋๊ฐ ์์ ๋ฐ ๊ฒ์ธ์ง ์ฐ์ ์์๋ฅผ ์ ํ๋ ๊ฒ์ด ์ค์ํ๋ค. ์ฌ๊ธฐ์๋ CSS๋ฅผ ์ด์ฉํ์ฌ ๋ ํ๊ทธ๊ฐ์ ์ฐ์ ์์๋ฅผ ๋๋ ๊ฒ์ธ๋ฐ, position๊ณผ zindex๊ฐ ์ฐ์ธ๋ค. (3) ๋ง์ง๋ง์ผ๋ก ๋ฐ์ todo๋ฅผ ์ถ๊ฐํ ์ ์๋ ..
2023.04.11
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
ToDo์บ๋ฆฐ๋ ํด๋ก ์ฝ๋ฉ - Custom Hook์ผ๋ก ์ ๋ฆฌ
์ฐ๋ฆฌ๋ ์บ๋ฆฐ๋ ๊ตฌํ ๋ฟ๋ง ์๋๋ผ ToDo List ๊ตฌํ๋ ํด์ผํ๊ธฐ ๋๋ฌธ์, ์์ชฝ ์ํ๋ณ์๋ค์ด ์์ฌ ์ ํ๋ฉด ๊ฐ๋
์ฑ์ด ํ์ ํ ๋จ์ด์ง๊ฒ ๋๊ณ ์ ์ง๋ณด์์ ํฐ ์ด๋ ค์์ ๊ฒช์ ์ ์๋ค. ๋ฐ๋ผ์ ์ง๊ธ๊น์ง ๋ง๋ค์๋ ์บ๋ฆฐ๋์ ์ํ๋ณ์ ๋ฐ ํ์ํ ํจ์๋ค์ ๋ฐ๋ก useCalendar๋ผ๋ Custom ํ
์ ๋ฃ์ด์ ์ ๋ฆฌํ๋ค. App.js ์์ ํ์ํ ๊ฐ๋ค์ useCalendar์ return ๊ฐ์์ ๋ฐ์์จ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด์ ๋ถํฐ ๋ง๋ค useTodoList๋ ์ฒ์๋ถํฐ ๋ฐ๋ก ์ปค์คํ
ํ
ํ์ผ์ ๋ง๋ค๊ณ ๊ฑฐ๊ธฐ์ ํ์ํ ์ํ๋ณ์๋ค๊ณผ ํจ์๋ค์ ์ ๊ฒ ๋ค. 1. use-Calendar.js import dayjs from "dayjs"; import { useState } from "react"; export const useCalendar = (..
2023.04.08
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
์บ๋ฆฐ๋ ์ฑ ํด๋ก ์ฝ๋ฉ -์๋จ ๋ฐ ํ์ดํ ๋ฐ ๋ ์ง ๋๋ ์ ๋, ์ํ๋ ๋
,์,์ผ๋ก ๊ฐ ์ ์๊ฒ ํ๊ธฐ
1. ์๋จ๋ฐ์ ๋ ์ง ๋๋ฅผ ์ ์ํ๋ ๋
์์ผ ์ ํ ๋ฐ ๊ฐ ์ ์๋๋ก ๋ง๋ค๊ธฐ 2. ํ์ดํ ๋๋ฅผ ์ ์ ๋ฒ ๋ฌ, ๋ค์๋ฌ๋ก ์ด๋ํ๊ธฐ 3. ์ค์ค๋ก ํด๋ณด๊ธฐ ์ค๋ฌด์คํ๊ฒ ํจ. 16๋ถ
2023.04.07
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
์บ๋ฆฐ๋ ํด๋ก ์ฝ๋ฉ ํน์ ๋ ์ง ๋๋ ์ ๋, ๋ฌ๋ ฅ์ด ๋ฐ์์ด ์ค๋๋ก ํ๊ธฐ
1. ๊ฐ์๋ ์ํ ๋ณ์๊ฐ ์ถ๊ฐ๋์๋ค. ์ํ ๋ณ์๋ renderItem ์ on Press ์ ์ด์ฉํด ์ฌ์ฉ์๊ฐ ํน์ ๋ ์ง ๋๋ฅผ ๋ ๋ง๋ค ์ํ ๋ณ์๊ฐ ์ต์ ํ ๋๋๋ก ์ธํ
ํ๋ค. ์ด๋ ๊ฒ ์ธํ
๋ ์ํ๋ณ์๋ ์ด 3๊ฐ์ง์์ ์ฐ์ธ๋ค. ๋จผ์ ๋ฌ๋ ฅ์ ๋ค์ด๊ฐ dayjs ๋ณ์๋ค์ ๋ฐฐ์ด๋ก ๋๋ ค์ฃผ๋ utill.js์ ์ด์ now(ํ์ฌ์๊ฐ)์ ์ ๋ฃ๊ณ , ํด๋น ์ํ ๋ณ์๋ฅผ ๋ฃ๋๋ค. ์ด๋ ๊ฒ ๋๋ฉด ์ฌ์ฉ์๊ฐ ๋ฌ๋ ฅ ๋ด ์ ์์ด๋ ๋ด์์ ๋ ์ง๋ฅผ ํด๋ฆญ ํ์ ์ ๊ทธ ๋ ์ง์ ๋ฌ๋ก ๋์ด๊ฐ๋ ๊ธฐ๋ฅ์ด ๊ตฌํ๋๋ค. ์๋ํ๋ฉด ๋๋ฌ์ง ๋ ์ง๊ฐ ์ํ ๋ฌ์ ๊ธฐ์ค์ผ๋ก ๋ฌ๋ ฅ์ ๋ค์ด๊ฐ ๊ฐ์ ๋ฐฐ์ด์ ๋ค์ ๋ฝ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ ๋ฒ์งธ๋ก renderItem์์ ์ฐ์ธ๋ค. onPress๋ฅผ ๋๋ฅด๋ฉด ์ํ๋ณ์๊ฐ ํด๋น ๋ ์ง๋ก ์ธํ
๋๋ค. isSelected๋ผ๋ ๋ณ์์์ ์ํ ๋ณ์๊ฐ ์ด์ฉ๋๋๋ฐ..
2023.04.07
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
๋ฌ๋ ฅ ํด๋ก ์ฝ๋ฉ (3) ๋ฌ๋ ฅ ํ๋ฉด ๋ง๋ค๊ธฐ
์ ๋ฒ์ ๋ง๋ค์๋ ๋ฌ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํด์ ๋ฌ๋ ฅ ๋ชจ์์ผ๋ก ํ๋ฉด์ ๋์ฐ๊ฒ ๋ค. ์์ ์ค๋์ ๋ ์ง 2022.11.24 ๋ถ๋ถ์ ์์ง ๊ตฌํ ์ํ๊ณ , now๋ผ๋ ํ์ฌ ์๊ฐ ๋ฐ์์ ์งํ ํ๊ฒ ์. 1. FlatList ๋ฅผ ๋ง๋ค์ด ํ๋ฉด ๋์ฐ๊ธฐ data๋ ์ ๋ฒ์ ์ฐ๋ฆฌ๊ฐ util.js ์์ ๋ง๋ค์๋ column์ ์ด์ฉํ๋ค. ์ฌ๊ธฐ์๋ ํ์ฌ "๋
์์ผ ์๋ถ์ด"๋ฅผ ๋ปํ๋ now๋ฅผ ๋ฃ์๋ค. ์ฌ์ค ์ ๋ฃ์ด์ค๋ ๋์ง๋ง, (why? dayjs()๋ ํ์ฌ ๋
์์ผ ์๋ถ์ด ์๋ฏธํ๋๋ฐ, ์ธ์๊ฐ ์๋ฌด๊ฒ๋ ๋์ด์ค์ง ์์ผ๋ฉด getCalendarColumns ์์ ์๋ dayjs๋ ์ธ์๋ฅผ ์๋ฌด๊ฒ๋ ์ ๋ฐ๊ฒ๋๊ธฐ ๋๋ฌธ) ์ผ๋จ ๋ฃ์ด์ค๋ค. data์ colums๋ฅผ ๋ฃ์ผ๋ฉด ์ด์ renderItem์์ columns์ ๋ฐฐ์ด ์์๋ฅผ ์ฐจ๋ก๋ก ๋๋ฉด์ ์ด๋ ํ ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํ..
2023.04.05
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
์บ๋ฆฐ๋ ์ฑ ํด๋ก ์ฝ๋ฉ(2) - ๋ฌ๋ ฅ ๋ด๋ถ ๋ ์ง ๋ฐ์ดํฐ ๋ง๋ค๊ธฐ
๋ฌ๋ ฅ ๋ด๋ถ์๋ ๋ค์๊ณผ ๊ฐ์ด ๋ ์ง๊ฐ ์์ด์ผ ํ๋ค. ์ฐ๋ฆฌ๋ ์ด๋ฒ 4์๋ฌ์ ๋ ์ง ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค ๊ฒ์ด๋ค. ์์์ ๋ณด๋ฉด ์ ์ ์๋ฏ์ด, ๋ฌ๋ ฅ์๋ ํด๋น ์์ ๋ ์ง ๋ฟ๋ง ์๋๋ผ, ๋น ๊ณต๊ฐ์ ์ฑ์ฐ๋ ์ ์, ๋ด์์ ๋ ์ง๊ฐ ์กฐ๊ธ์ฉ ๋ค์ด๊ฐ ์๋ค. ์ด ๋ถ๋ถ๋ ์ผ๋ง๋ ํ์ํ์ง ๊ณ์ฐ ํด๋ด์ด์ ๋ฐ์ดํฐ์ ์ถ๊ฐํ ๊ฒ์ด๋ค. 1. getCanlendarColumns // ๋ด ํ์ผ์์ import๋ ์ต์ข
๋ณธ // now๋ฅผ ์ ์ธํ์ง ์์๋๋ฐ ์ ๋์๊ฐ๊น? // now๋ฅผ ์ ์ธํ์ง ์์ ๊ฒ์ด ๋ง๋ค. ๊ทผ๋ฐ ๊ทธ๋ฅ dayjs()์ ํ๋ผ๋ฏธํฐ ์ ๋ฃ์ ๊ฒฝ์ฐ, dayjs()๋ ์ต์ ๋ ์ง๋ฅผ ๋ฐํํ๋ค. // ์ด๊ฑธ ์ด์ฉํ ๊ฒ์ด๋ค. ๊ทธ๋ฅ now ๋ค ์ง์๋ฒ๋ ค๋ ๋์ํ๋ค. export const getCalendarColumns = (now) => { // now๋ ..
2023.04.05
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
๋ฌ๋ ฅ ํด๋ก ์ฝ๋ฉ (1) dayjs ์ ๋ํ์ฌ ์์๋ณด๊ธฐ
1. dayjs๋ react์์ ๋ ์ง, ์๊ฐ์ ํ์ํ๊ณ ์๊ฐ ๊ณ์ฐ์ ์ํด ์ฐ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค. (1) install npm install dayjs yarn์ ๋ฐ๋ก ๋ณด์๊ธธ.. (2) import ์ด์ ๋ค์ด ๋ฐ์ dayjs ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด ๋ณด๊ฒ ๋ค. dayjs ์์ฒด๋ง import ํ๋ค๊ณ ํด์ ๋ด์ฅ ํจ์๋ฅผ ๋ค ์ธ ์ ์๋ค. ๋ช๋ช ํจ์๋ค์ ์ง์ import๋ฐ ์์๋ ๋ฐ์์ผ ํ๋ค. 2. ๋ง์ด ์ฐ์ด๋ ํจ์ ์์๋ณด๊ธฐ (0) ์ฌ์ ์ธํ
now๋ผ๋ ๋ณ์์ ๋
์์ผ ์๋ถ์ด๋ฅผ ๋ฃ์ด์ฃผ๊ฒ ๋ค. ๋ค์์ด dayjs๋ฅผ ํตํด ๋ณ์์ ๋
์์ผ, ์๋ถ์ด๋ฅผ ๋ฃ๋ ๋ฐฉ๋ฒ์ด๋ค. const now = dayjs("2022-11-04 16:01:30"); (1) set ํจ์, format ํจ์ day(now).set("minute", 5)๋ now์์..
2023.04.05
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
๊ณ์ฐ๊ธฐ - ํด๋ก ์ฝ๋ฉ (CustomHook ์ผ๋ก ์ง๊ธ๊น์ง ๋ง๋ ๋ถ๋ถ ๊ฐ์ธ๊ธฐ)
ํ๋์ ํ์ผ์ ์ํ ๋ณํ ๋ณ์, ํจ์๋ค๊ณผ View ๋ถ๋ถ์ด ํผ์ฌ ํ๋ฉด, ์ ์ง ๋ณด์๊ฐ ์ด๋ ต๋ค. ๊ทธ๋์ ์ํ ๋ณํ ๋ณ์, ํจ์๋ค์ ๋ค๋ฅธ ํ์ผ๋ก ๋นผ์ฃผ๊ณ , ๊ทธ ํ์ผ return ๊ฐ์ ํ์์ View part ํ์ผ์๊ฒ ๊ฑด๋ค๋ค ์ฃผ๋ ์์ผ๋ก ํด์ผ์ง ๊ฐ๋
์ฑ์ด ์ข๋ค. ์ฐ๋ฆฌ๋ ์ฐ๋ฆฌ๊ฐ ๋ง๋ค์๋ Hook๋ค์ ๋ชจ์ ๋๋ง์ Hook file์ ๋ง๋ค ๊ฒ์ด๋ค. **์ฃผ์์ ** Hook์ ๋ฌด์กฐ๊ฑด use๋ผ๋ ์ด๋ฆ์ผ๋ก ์์ํด์ผํจ. Custom Hook (์ฐ๋ฆฌ๊ฐ ๋ง๋ค๋ ค๋ Hook) file ๋ ์์ธ ์์ ์ด๋ฒ์ ๊ณ์ฐ๊ธฐ ๋ง๋๋๋ฐ ์ผ๋ Hook ์ด๋๊น useCalculator๋ผ๊ณ ์ฐ์. ์ด ์์ ๋ด์ฉ ๋ค ๋ฃ๊ณ return {} (๊ฐ์ฒด) ์์ ํ์ ๋ณด๋ธ๋ค. ()๋ ํ๋์ ๊ฐ ๋ฐ์ ๋ชป ๋ณด๋ด๊ธฐ ๋๋ฌธ์ {}๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. ()๋ ์๋ฌด ์๋ฏธ ์๊ณ ๊ทธ๋ฅ..
2023.04.05
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
๊ณ์ฐ๊ธฐ ํด๋ก ์ฝ๋ฉ - ์์ธ์ฒ๋ฆฌ
ํ๋ก๊ทธ๋จ์ ๋ง๋ค ๋ ์๋ง์ ์์ธ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ค. ๊ณ์ฐ๊ธฐ์๋ ์๋ง์ ์์ธ์ฒ๋ฆฌ๊ฐ ํ์ํ์ง๋ง ์ผ๋จ ๋ช ๊ฐ๋ง ํด๋ณด์ ๋ฌธ์ 1: ๋ ๋ฒ์งธ ๊ฐ์ ํ ์๋ฆฌ ์ ๋ฐ์ ํด๋ฆญํ ์ ์๋ ์ด์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ์ด์ : const onPressNum = (num) => { if(currentOperator) { setResult(input); setInput(num); } else{ const newInt = Number(`${input}${num}`) setInput(newInt) } }; ์ฒซ๋ฒ์งธ ์ซ์ ๋๋ฅด๊ธฐ -> = ์๋ ์ฐ์ฐ์ ๋๋ฅด๊ธฐ -> ๋ ๋ฒ์งธ ์ซ์ ๋๋ฅด๊ธฐ ์์ผ๋ก ์งํ๋๋ค. ์์ ๋ก์ง์ ๋ณด๋ฉด ํ์ฌ ์ฐ์ฐ์๊ฐ ๊ณจ๋ผ์ ธ ์์ผ๋ฉด, ๋ถ์ฌ์ฐ์ง ๋ง๊ณ , ๋ฐ๋ก ๋ฐ๋ก result๋ก ๊ฐ์ ๋๊ธฐ๊ฒ ๋์ด์๋ค. ๊ทธ๋์ ๋ ๋ฒ์งธ ์ซ์์์๋ ํ ์๋ฆฌ..
2023.04.05
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
๊ณ์ฐ๊ธฐ ํด๋ก ์ฝ๋ฉ - ๊ณ์ฐ ๋ฐ ์ด๊ธฐํ ๋ก์ง
0. Test ํ๋ ๊ฐ๋ค์ด ๋์ ๋ณด์ด๋๋ก UI์ test ๊ฒฐ๊ณผ ์ฐฝ ๋ง๋ค๊ธฐ test ๊ฒฐ๊ณผ์ฐฝ์ ๋ง๋ค์ด test ๋ด์ฉ์ ํญ์์ ์ผ๋ก ํ์ธํ๋ ๊ฒ์ด ์ข๋ค. main ํจ์์๋ค๊ฐ ๋ง๋ค์ด์ค๋ค. 1. Button์์ ํจ์ ์ด์ฉํด ์ค๋ณต ์ฝ๋ ์ ๊ฑฐ ๋ฐฐ์ด์ Map ํจ์ ์ด์ฉ ํ๋์ row์ ๋ค์ด๊ฐ๋ ์ซ์ ๊ฐ๋ค๋ก ๋ฐฐ์ด์ ๋ง๋ค์ด์ฃผ๊ณ - [7,8,9] ๋ฐฐ์ด์ ๋ด์ฅ ํจ์ map์ ์ด์ฉ (num)์ ๋ฐฐ์ด์ ์์๊ฐ ์ฐจ๋ก๋๋ก ๋์
๋๋ ์ธ์ text๋ String ๊ฐ์ ๋ฐ์์ผ ํ๋ฏ๋ก `${}`์ด์ฉํด์ number ๋ณ์์ธ num์ String์ผ๋ก ํ ๋ณํ ์ด๋ฐ ์์ผ๋ก 789, 456, 123์ ์ฝ๋๋ฅผ ์ค์ด์. 2. ์ซ์ ํด๋ฆญ ์ ๊ฒฐ๊ณผ์ฐฝ์ ์ฐํ๋๋ก const onPressNum = (num) => { setInput(num); } ํด๋น num..
2023.04.04
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
๊ณ์ฐ๊ธฐ ํด๋ก ์ฝ๋ฉ(2) - ๊ฒฐ๊ณผ์ฐฝ ๋ง๋ค๊ธฐ
1. ์ฝ๋ ๋ฆฌ๋ทฐ (1) styled component ์ด์ฉํ์ฌ ํ๊ทธ๋ค ๊ฐ๋
์ฑ ๋์ด๊ธฐ a. styled component ๊น๊ธฐ npm install styled-components b. styled component ์ด์ฉํ์ฌ ๊พธ๋ฏธ๊ธฐ styled Component ์ด์ฉํ๋ฉด ๊ฐ๋
์ฑ์ด ์ข์์ง๋ค. ๊ทธ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ๋ค. ์ธ๋ผ์ธ ์คํ์ผ๋ก ๊พธ๋ฐ ๊ฒฝ์ฐ, style ์์ฑ๋ค์ ์ด์ฉํด ๊พธ๋ฏธ๋ ๋ด์ฉ์ ์ ์ด์ค์ผ ํ๋ค. ์ด๋ ๊พธ๋ฏธ๋ ๋ด์ฉ์ด ๋ง์์ง์๋ก ๊ฐ๋
์ฑ์ด ๋จ์ด์ง๋ค. StyleSheet๋ฅผ ์ด์ฉํ๋ ๊ฒฝ์ฐ์๋ ํ๊ทธ๋ค๊ณผ CSS ๊ฐ์ฒด๋ค์ ์ฐ๊ฒฐํด์ค์ผ ํ๋๋ฐ, ์ด๊ฒ CSS ๊ฐ์ฒด์ ์์ด ๋ง์์ง์๋ก ํท๊ฐ๋ฆด ๊ฐ๋ฅ์ฑ์ด ๋๋ค. ์คํ์ผ๋ ์ปดํฌ๋ํธ๋ ๋ง ๊ทธ๋๋ก ์ปดํฌ๋ํธ์ ๋ด์ฉ์ CSS๋ฅผ ์ฒจ๊ฐํ ์ ์๋ ๊ฒ์ด๋ค. ์ปดํฌ๋ํธ๋ ์ด๋ฆ์ ๋ง์๋๋ก ํ ์ ์..
2023.04.04
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
๊ณ์ฐ๊ธฐ ํด๋ก ์ฝ๋ฉ (1) ์ซ์ ๋ฐ ์ฐ์ฐ์ ๋ฒํผ UI ๊ฐ๋ฐ
1. ์ฝ๋ ๋ฆฌ๋ทฐ import React from "react" import { TouchableOpacity, View, Text } from "react-native" import styled from "styled-components/native" const ButtonContainer =styled.View` flex-direction: row; width: 100%; `; //Button Type : 'reset' | 'Operator' | 'num' const Button = ({text, onPress, flex, type}) => { const backgroundColor = (type === "reset") ? COLOR.RESET : (type === "operator") ? COLOR...
2023.04.04
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
๊ณ์ฐ๊ธฐ ์์ UseState ์ค์
1. ์ฝ๋ ๋ฆฌ๋ทฐ UseState๋ง ์ค์ UseState๋ ์ํ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ํจ์ ์ด๋ค. ๊ตฌ์กฐ ๋ถํด ํ ๋น์ ์ฒซ๋ฒ์งธ ์ธ์์๋ ๊ฐ์ด ์ ์ฅ๋ ๋ณ์, ๋ ๋ฒ์งธ ์ธ์๋ ๊ฐ์ ๋ฐ๊ฟ์ฃผ๋ ํจ์๊ฐ ๋ค์ด๊ฐ๋ค. useState()์ () ์์ ๊ฐ์ ์ด๊ธฐ๊ฐ์ด๋ค. ์ฒ์๋ถํฐ ๋ชจ๋ UseState๋ฅผ ์ธํ
ํ๊ณ ๊ฐ๋ ค๊ณ ํ๋ฉด ๋๋ ค ๋จธ๋ฆฌ ์ํ๋ค. ์ด์งํผ ๊ฐ๋ฐํ๋ค๊ฐ ํ์ํ ๊ฒ์ด ๋ ์๊ธฐ๋ฉด, ๊ทธ ๋ ๋ ์ถ๊ฐํด์ผ ํ๋ค. ๋ง์ ํธํ ๋จน๊ณ ๊ตต์ง ํ ๊ฒ๋ง ์ผ๋จ ๊ตฌํํ๋ค๋ ์๊ฐ์ผ๋ก ํ์.
2023.04.04
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
ํฐ์น๋ฒ์ ๋ํ๊ธฐ
1. ์์ด์ฝ์ ํฐ์น๋ฒ์ ๋ํ๋ ๋ฒ (1) View๋ก ๋์ด์๋ icon ์ปดํฌ๋ํธ๋ฅผ TouchableOpacity๋ก ๋ฐ๊พผ๋ค. (2) hitslop ์ด์ฉ TouchableOpacity์ hitslop ์์ฑ์ ํด๋น ์์ด์ฝ์ ํฐ์น ๋ฒ์๋ฅผ ๋๋ ค์ค๋ค. top, bottom, left, right์ ์์ ์๊ธฐ๊ฐ ๋๋ ค์ฃผ๊ณ ์ถ์ ๋งํผ์ ์ ์ด์ฃผ๋ฉด ๋๋ค. const IconButton = ({name, bgColor}) => { return( ) }; ** ๊ณ๋ค๋ฆฌ ์ปดํฌ๋ํธ์์ ์์ฑ์ props๋ก ๋ฐ์ ๊ฒฝ์ฐ, {} ์์ด () ์์ ๋ฐ๋ก ์ ์ด์ฃผ๋ฉด ๋์๋ค. ์๋ํ๋ฉด, props๋ ํ๋์ ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ด๋ค. ์ค๋ฅ ์ฝ๋ค๋ฅด ์ฝ์ด๋ณด๋ () ์์๋ ๊ฐ์ฒด๋ ๋ฐฐ์ด๊ฐ์ ๊ตฌ์กฐ์ฒด๋ง ๋ค์ด์ฌ ์ ์๋ ๊ฒ ๊ฐ๋ค. ์์ฒ๋ผ name, bgColor๋ฅผ ๋ฃ์๊ฑฐ..
2023.04.04
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
์ปดํฌ๋ํธ ์คํ์ผ๋ง
1. React-Native์์ CSS ์คํ์ผ๋ง์ ํ๋ ๋ฐฉ๋ฒ์ด 3๊ฐ์ง๊ฐ ์๋ค. (1) inline ์คํ์ผ ์ด๋ฐ ์์ผ๋ก ํ๊ทธ ์์๋ค๊ฐ ์ ์ด์ฃผ๋ ๊ฒ ์์ด ๋ง์์ง๋ฉด ๊ฐ๋
์ฑ์ด ๋จ์ด์ง์ง๋ง, ๋ฐ๋๋ก ์์ด ์ ์ผ๋ฉด ๊ฐ๋
์ฑ์ด ์คํ๋ ค ๋๋ค. (2) StyleSheet ์จ์ ๋ด์ฉ ๋ฐ์ผ๋ก ๋นผ๊ธฐ ์์ด ๋ง์์ง ๊ฒฝ์ฐ, ์ด๋ ๊ฒ ์ฌ์ฉํ๋ฉด ๊ฐ๋
์ฑ์ด ๋์์ง๋ค. (3) expo์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ธ styled Component ์ฌ์ฉ ์ด๊ฑด ์ปดํฌ๋ํธ์ธ๋ฐ ์์ CSS ๊ธฐ๋ฅ์ ๋ฃ์ ์ ์๋ ๊ฒ์ด๋ค. a.์ฅ์ ์ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ์ด๋ฏ๋ก, ์ปดํฌ๋ํธ ์ด๋ฆ์ ๋ด๊ฐ ์ฐ๋ ค๋ CSS์ ๋ง๊ฒ ๋ฐ๊ฟ ์ ์๋ค. ์ด๋ ์ปดํฌ๋ํธ๋ง ๋ณด์๋ ํด๋น ํจ์๊ฐ ์ด๋ป๊ฒ ๊พธ๋ฉฐ์ง ๊ฒ์ธ์ง ์ ์ ์์ด ๊ฐ๋
์ฑ์ด ๋์์ง๋ค. b. ํํ (1) styled.View ํน์ Image, T..
2023.04.04
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
Scroll View ๋์ FlatList ์ฌ์ฉํด๋ณด๊ธฐ
1. Scroll View ์ FlatList์ ์ฐจ์ด์ . ScrollView๋ ํ๋ฉด์ ๋ณด์ด์ง ์๋ ๋ถ๋ถ๋ ๋ค ๋๋๋งํ์ฌ ๋ง๋ค์ด ๋๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์๊ฐ ํ๋ฉด์์ ๋ฒ์ด๋๋ ๋ถ๋ถ์ ๋ณด๊ณ ์ถ์ผ๋ฉด, ์คํฌ๋กค ํด์ ๋ณผ ์ ์๊ฒ ๋ง๋ ๋ค. ๋ฐ์ดํฐ ์์ด ๋ง์ง ์๊ณ ๊ณ ์ ์ ์ผ ๋ ์ฌ์ฉํ๋ค. ๋ฐ๋ฉด FlatList๋ ํ๋ฉด์ ๋ณด์ด๋ ๋ถ๋ถ๋ง ๋๋๋งํ์ฌ ๋ง๋ค์ด ๋๋๋ค. ๋ง์ฝ ์ฌ์ฉ์๊ฐ ๋ณด์ด์ง ์๋ ๋ถ๋ถ์ ๋ณด๊ณ ์ถ์ด ์คํฌ๋กค ํ ์ ๊ทธ ๋ ์ ๋ง๋ค์ด ๋์ ๋ด์ฉ๋ค์ ๋ง๋ ๋ค. ๋ฏธ๋ฆฌ ๋ชจ๋ ๋ด์ฉ์ ๋ง๋ค์ด ๋๋ Scroll View์ ๋น๊ตํ์ ๋ ์๋์ ์ผ๋ก ์ข์ ์ฑ๋ฅ์ ๋ณด์ธ๋ค. 2. ์ฝ๋ ๋ฆฌ๋ทฐ (1) FlatList์ ์์ฑ๋ค ๋ฏ์ด๋ณด๊ธฐ index} ItemSeparatorComponent={ItemSeparatorComponent} stickyHe..
2023.04.03
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
TabBar
1. ์ฝ๋ ๋ฆฌ๋ทฐ (1) App.js export default function App() { const [isOpened, setIsOpened]=useState(true); const [selectedTabIdx, setSelectedTabIdx] = useState(0); const onPressArrow = () => { console.log("clicked arrow") setIsOpened(!isOpened) } return ( ); } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#fff', paddingTop: statusBarHeight, }, }); a. tabBar ์ ์ธํ ๋ชจ๋ ์ปดํฌ๋ํธ๋ค์ view..
2023.03.30
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก
์น๊ตฌ๋ฆฌ์คํธ ํ ๊ธ ๋ฒํผ ๋ง๋ค๊ธฐ
์น๊ตฌList๋ฅผ ํ์ดํ ํค๋ฅผ ๋๋ฌ ํ ๊ธ ์ํฌ ๊ฒ์ด๋ค. ํ ๊ธ ์ํฌ๋ ค๋ฉด boolean ๋ณ์๋ฅผ ๋ง๋ค๊ณ , ์ฐ๋ฆฌ๊ฐ ์ํฉ์ ๋ฐ๋ผ ๊ทธ ๊ฐ์ ์ํ๋ฅผ ๋ณํ ์์ผ์ฃผ๋ฉด ๋๋ค. (useState ์ด์ฉ) ๋ณํ๊ฐ ํ์ํ ๊ณณ์ friendSection, friendList 2๊ฐ์ง ์ฅ์์ด๋ค. boolean ๋ณ์๊ฐ false ์ผ๋, friendSection์ ํ์ดํ๋ฅผ ์๋ก ๋ณด๊ฒ ํ๊ณ , true ์ผ๋๋ ์๋๋ฅผ ๋ณด๊ฒ ๋ง๋ค์ด์ผ ํ๋ค. friednList์์ boolean ๋ณ์๊ฐ false ์ผ ๋, return ๊ฐ์ null๋ก ์ค์ ์ ๋ณด์ด๊ฒ ๋ง๋ค๊ณ true์ผ ๋ ์๋ ๋ก์ง์ ๋ณด์ด๊ฒ ๋ง๋ค๋ฉด ๋๋ค. ์ฌ๊ธฐ์ ์ฐ์ด๋ ๊ฒ์ด ์ผํญ ์ฐ์ฐ์ ํน์ if๋ฌธ, &&๋ฌธ ์ด๋ค. 1. ์ฝ๋ ๋ฆฌ๋ทฐ (1) App.js // useState๋ก boolean ๋ณ์์ ์ํ ..
2023.03.27
๋ชจ๋ฐ์ผ ๊ฐ๋ฐ/React Native-์ด๋ก