์ ๋ฒ์ ๋ง๋ค์๋ ๋ฌ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํด์
๋ฌ๋ ฅ ๋ชจ์์ผ๋ก ํ๋ฉด์ ๋์ฐ๊ฒ ๋ค.
์์ ์ค๋์ ๋ ์ง 2022.11.24 ๋ถ๋ถ์ ์์ง ๊ตฌํ ์ํ๊ณ , now๋ผ๋ ํ์ฌ ์๊ฐ ๋ฐ์์ ์งํ ํ๊ฒ ์.
1. FlatList ๋ฅผ ๋ง๋ค์ด ํ๋ฉด ๋์ฐ๊ธฐ
data๋ ์ ๋ฒ์ ์ฐ๋ฆฌ๊ฐ util.js ์์ ๋ง๋ค์๋ column์ ์ด์ฉํ๋ค.
์ฌ๊ธฐ์๋ ํ์ฌ "๋ ์์ผ ์๋ถ์ด"๋ฅผ ๋ปํ๋ now๋ฅผ ๋ฃ์๋ค. ์ฌ์ค ์ ๋ฃ์ด์ค๋ ๋์ง๋ง, (why? dayjs()๋ ํ์ฌ ๋ ์์ผ ์๋ถ์ด ์๋ฏธํ๋๋ฐ, ์ธ์๊ฐ ์๋ฌด๊ฒ๋ ๋์ด์ค์ง ์์ผ๋ฉด getCalendarColumns ์์ ์๋ dayjs๋ ์ธ์๋ฅผ ์๋ฌด๊ฒ๋ ์ ๋ฐ๊ฒ๋๊ธฐ ๋๋ฌธ)
์ผ๋จ ๋ฃ์ด์ค๋ค. data์ colums๋ฅผ ๋ฃ์ผ๋ฉด ์ด์ renderItem์์ columns์ ๋ฐฐ์ด ์์๋ฅผ ์ฐจ๋ก๋ก ๋๋ฉด์ ์ด๋ ํ ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํ๋ค.
numColumns๋ ํ๋์ ํ์ ๋ช ๊ฐ์ renderItem ๊ฐ์ ์ฑ์ฐ๊ณ ๋ค์ ์ด๋ก ๋์ด๊ฐ ๊ฒ์ธ์ง๋ฅผ ๋ฌป๋ ์์ฑ์ด๋ค. ์ผ์ฃผ์ผ์ 7์ผ ์ด๋ฏ๋ก ๋ฌ๋ ฅ์ ํ ์ค์ 7๊ฐ์ Item์ด ์์ผ๋ฉด ๋๋ค.
์ด์ ์ฐ๋ฆฌ๊ฐ ๋๋ฌด ๋ณต์กํ ๊ฒ ๊ฐ์์ Component ํ ์ํค๊ณ return ๋ฐ์ผ๋ก ๋นผ๋์๋, renderItem์ ๊ธฐ๋ฅ๋ถ๋ถ, ListHeaderComponent๋ฅผ ํ๋์ฉ ์์๋ณด๊ฒ ๋ค.
(1) RenderItem
renderItem์ date์ ์์ ํ๋ ํ๋๋ฅผ item์ด๋ ์ด๋ฆ์ผ๋ก ๋ฐ๋๋ค. ์ด๊ฑธ ๊ฐ๋ ์ฑ์ ๋์ด๊ธฐ ์ํด date ๋ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ ์ค๋ค.
์ฒซ ๋ฒ์งธ ๋ณ์ dayText๋ date์์ '์ผ'๋ง ๋นผ์ ๊ฐ์ ธ์ค๋ ๊ฒ์ด๋ค.
์๋ dayjs์ ๋ฐ์ดํฐ๋ "2023-04-04T15:00:00.000Z" ์ด๋ฐ์์ผ๋ก ๋ ์์ผ ์๋ถ์ด๋ก ๋์ด์จ๋ค. ์ฌ๊ธฐ์ ์ผ์๋ง ์ฑ๊ฒจ ์จ๋ค.
๋ ๋ฒ์งธ day๋ date์์ ์์ผ๋ง ๊ฐ์ ธ์จ๋ค. dayjs์์ ์์ผ์ ์ซ์๋ก ํํ๋์ด '0~6' ๊น์ง๊ฐ "ํ ~์ผ" ๋ปํ๋ค.
์ธ ๋ฒ์งธ ๋ณ์๋ Color๋ก day๋ฅผ ํ์ฉํด ํ ์ธ ๋ ์ง๋ ํ๋์, ์ผ์ธ ๋ ์ง๋ ๋นจ๊ฐ์์ผ๋ก ์น ํ๊ฒ ํด์ค๋ค.
๋ง์ง๋ง ๋ณ์์ธ isCurrentMonth๋ boolean ๊ฐ์ผ๋ก์ ํด๋น ๋ ์ง๊ฐ ํ์ฌ ์์ ํฌํจ๋๋์ง์ ๋ฐ๋ผ ์ฐธ/๊ฑฐ์ง์ ๋ํ๋ธ๋ค.
๋ฌ๋ ฅ์์ ๋ณด๋ฉด ํด๋น ๋ฌ์ด ์๋์ง๋ง ๋ฌ๋ ฅ์ ๋ํ๋ ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
์ฌ๊ธฐ์๋ 30 31๊ณผ 1 2 3 ์ด ๊ทธ๋ฐ ๊ฒ์ด๋ค.
return ๊ฐ์ ๋ฐ๋ก ๋ ์ปดํฌ๋ํธํ ํด์ ๋บด์ฃผ์๋ค. ์๋ํ๋ฉด ์์ ๊ธ์๋ค ์ผ~ ํ ๋ฅผ ์ ์ ๋๋ ์ฌ์ฉ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ฌ์ฌ์ฉ์ด ์๊ณ , ์ฝ๋๊ฐ ๊ธธ์ด ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ฏธ text, color, opacity์ ๊ดํ ๊ฒ์ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์์ผ๋ ๊ทธ๋ฅ ์ธ์๋ก ๊ฐ์ ๋ฐ์์, ์คํ์ผ๋ง ํด์ค๋ค์์ ์ง์ด๋ฃ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
(2) ListHeaderComponent
์ํ์๋ชฉ๊ธํ ๋ถ๋ถ๊ณผ
2022.11.24 ๋ถ๋ถ์ ๊ตฌํํ๋ ๊ณต๊ฐ์ด๋ค.
ใฑ. < 2022.11.24 > ๋ถ๋ถ
<ArrowButton> ๊ตฌ๋ฌธ์ Icon์ ๊ดํ ๋ก์ง์ด < > ๋ ๋ถ๋ถ์์ ์ค๋ณต๋์ด ์ปดํฌ๋ํธ ํ ์์ผ์ ๋นผ์ค ๊ฒ์ด๋ค.
์์ด์ฝ์ ํฐ์นํ ์ ์๊ฒ TouchableOpacity๋ก ๊ฐ์๋ค.
ใด. ์ผ์ํ์๋ชฉ๊ธํ ๋ถ๋ถ
map ํจ์ ์ด์ฉ ํด์ 0~6๊น์ง ์ฐจ๋ก๋๋ก day์ ๋ฃ๊ณ , ์ผ~ํ ๋ฌธ์๋ฅผ ์ซ์์ ๋ง๊ฒ ๊ฐ์ ธ์ค๊ณ , ์ปฌ๋ฌ๋ ๊ฐ์ ธ์จ๋ค.
ํด๋น ๋ถ๋ถ๋ ๋ด์ฉ์ด ๊ธธ์ด ์ปดํฌ๋ํธํ ์์ผฐ๋ค.
App.js ์ ๋ ์ ๊ธฐ์๋ ๊ฐ๋ ์ฑ์ด ์ ์ข์ผ๋ฏ๋ก, ์ด๋ฏธ import ํด๋์ utill.js ์ export default๋ก ํจ์๋ฅผ ๋ง๋ค์ด์ ์์ ํด์ค์.
์์ง ์ ๋ชจ๋ฅด๊ฒ ๋ ์
๋ฌด์์ ์ ์ญ๋ณ์๋ก ๋ฃ๊ณ ๋ฌด์์ ์ฑ() ์์ชฝ์ ์ ๋์ง ๊ธฐ์ค์ ๋ชจ๋ฅด๊ฒ ๋ค.
2. ์ค์ค๋ก ํด๋ณด๊ธฐ
(1)์ฃผ์ํ ์ . CSS ํน์ง
CSS ๋ ์ธ์์ CSS ์์ฑ์ ์ด๋ฆ์ด ๊ฐ์ ๊ฒฝ์ฐ
๊ทธ ์ธ์๋ฅผ ์์ฑ์ ๊ฐ์ผ๋ก ๋ฐ๋๋ค
(color) => {<text color/>}
๋ก ๊ฐ๋ฅํ๋ค.
ํ์ง๋ง,
๋ค๋ฅธ ์ปดํฌ๋ํธ์ ๊ฐ ์ ๋ฌํ ๋๋ ์ด์ ๋ณ๊ฐ๋๊น ๊ฐ์ ๋ฃ์ด์ค์ผ ํ๋ค.
(2) props ๊ฐ ์๋ ์์ฑ ์์ฒด๋ฅผ ์ธ์๋ก ๋ฐ์ ์ธ๋ ค๋ฉด, ()์์ {} ๋ฅผ ์จ์ค์ผ ํ๋ค.
(3) ์ํ์๋ชฉ๊ธํ ์ผ ๊ตฌํ์์ ๋งํ.
a.
์ด๊ฑด ํ๋ฆฐ์ด๊ตฌ๋ค <>๋ฅผ ์ฐ๋ ๊ฑด ํ๊ทธ๋ค ์ฌ์ด์์ <GetDayText/> ๋ ๋ญ๊ฐ๋ฅผ ๋ํ๋ด์ผ ํ ๋ ์ฌ์ฉํด์ผํ๋ ๊ฒ์ด๋ค.
์ฌ๊ธฐ์๋ ๋ณ์์ ๋ฐ์ดํฐ๋ก ๋ฃ๊ณ ์์ผ๋ฏ๋ก function ํ์์ผ๋ก ๋ฃ์ด์ผ ํ๋ค.
b. ๋ด๊ฐ ์ ๋ชฐ๋๋ ์ .
map์ ์ด์ฉํด์ ๋ฃจํ๋ฅผ ๋๋ ค์ผ ํ๋ค๋ ๊ฒ ๊น์ง๋ ์์๋๋ฐ ๋ฃจํ๋ฅผ ์ด๋์ผ ์จ์ผ ํ๋์ง ๋ชฐ๋๋ค.
๋ณดํต View์์๋ ๋์จ ๊ฒฐ๊ณผ๊ฐ๋ค๋ง ์ ๊ณ , ์ผ์ฒ๋ฆฌ๋ ๋ค๋ฅธ ๊ณณ์์ ํด์ ๋ณด๋ด์ค์ผ ํ๋ค๊ณ ์๊ฐํ๊ณ , ๊ทธ๋ฐ ์์ผ๋ก ์ผ ์ฒ๋ฆฌ๋ฅผ ํ๋ ๋ฐฉ๋ฒ๋ฐ์ ์์ง ๋ชปํ๋ค.
ํ์ง๋ง, {}๊ฐ ์์์ ๊ฐ๊ณผ ํ๋ค.
{}์ ์ฐ๋ฉด ํด๋น ๋ณ์์ ๊ฐ์ ์ฐ๊ฒ ๋ค๋ ๋ป์ด๋ค.
์ฌ๊ธฐ์๋ map ํจ์ ์ ์ฒด์ ๊ฒฐ๊ณผ๋ฅผ ์ฐ๊ฒ ๋ค๋ ์๋ฏธ๋ก {} ๋ก ๋ค ๊ฐ์๋ค.
return ๊ฐ์ด View์์ ์ฐ์ผ ์ ์๋ ํ๊ทธ์์ผ๋ก, ์ด์ ๊ฐ์ด View ์์์ ์จ๋ ๋๋ค.