1. Icon
๋ณ ๊ฑฐ ์๋ค.
expo Vector Icon์ ํ์ํ 3๊ฐ์ง ์์ name, size, color๋ฅผ ์ธ์๋ก ๋ฐ์์ icon์ ์์ฑํ๋ฉด ๋์ด๋ค.
2. Badge
children์ ์์์๋ ์ค๋ช ํ๋ฏ์ด ๋ถ๋ชจ์์์ <></>ํ๊ทธ ์ฌ์ด์ ๋ค์ด๊ฐ๋ ํ ์คํธ๋ฅผ ์๋ฏธํ๋ค.
ํด๋น ์ปดํฌ๋ํธ๋ ํ ์คํธ ์ฐ์ธก ์๋จ์
์์ ๊ฐ์ด ์๋ฆผ ๋ฑ์ง๋ฅผ ๋ถ์ด๋ ํ๊ทธ์ด๋ค.
ํ์ง๋ง ์์ ๊ฐ์ด ์๋ฆผ ํ์๋ฅผ ์นด์ดํธ ํ์ง ์๊ณ new๋ฅผ ์๋ฏธํ๋ N์ผ๋ก ๋์ฒดํ๋ค.
์ ์ปดํฌ๋ํธ๋ ๊ฒ์ View์ ์์ View ์ด์ค ๊ตฌ์กฐ๋ก ๋์ด ์๋๋ฐ,
๊ฒ์ View์๋ ์ธ์๋ก ๋ฐ์ children์ ์ฐ๊ณ
์์ View์๋ ๋ฑ์ง ๋ด์ฉ์ ์ผ๋ค.
์ด๋ ๊ฒ View๋ฅผ ์ด์ค๊ตฌ์กฐ๋ก ๊ฐ๋ฅธ ์ด์ ๋ ๋ฑ์ง๋ฅผ ์ฐ์ธก ์๋จ์ ์์น์ํค๊ธฐ ์ํจ์ด๋ค.
๋ฑ์ง์ style์์ position: absolute๋ฅผ ์ด ๊ฒ์ ๋ณผ ์ ์๋๋ฐ, ์ด๋ ์ฒ์์ผ๋ก ํฌ์ง์ ์ด static์ด ์๋ ์กฐ์ ์์๋ฅผ ๊ธฐ์ค์ผ๋ก ํ ์์์ ์์น๋ฅผ ์ ํ๋ ์์ฑ์ด๋ค.
react-native์์๋ ๋ชจ๋ ์์์ default position์ด relative์์ผ๋ก, absolute๋ฅผ ์ฐ๋ฉด ๋ถ๋ชจ ์์๋ฅผ ๊ธฐ์ค์ผ๋ก ์์น๋ฅผ ์ ํ๋ค.
๋ฐ๋ผ์ ๋ฑ์ง๋ฅผ right:-5, top:-5 ํ์ผ๋ฏ๋ก, ๋ถ๋ชจ์์(๊ฒ View)์ธ children์ ์ค๋ฅธ์ชฝ์์ 5 ๋จ์ด์ง๊ณ , ์๋จ์์ 5 ๋จ์ด์ง ๊ณณ์ ๋ฑ์ง๋ฅผ ์์น ์ํค๋ ๊ฒ์ด๋ค.
3. Button
์ด๊ฒ๋ ๋ณ ๊ฐ ์๋ค.
Pressable ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋น ์์๋ฅผ ๋๋ ์ ๋ onPress ํจ์๊ฐ ์๋ํ๋ค.
Pressable์ด TouchableOpacity์ ๋ค๋ฅธ ์ ์ Pressable์ ๋๋ ์ ๋, ๋๋ ๋ค๋ ๊ฒ์ ๋ณด์ฌ์ฃผ๋ ๋ชจ์ ์ด ๋ฐ๋ก ์กด์ฌํ์ง ์๋ ๋ค๋ ๊ฒ์ด๋ค.
hitSlop์ ํด๋น ์์๋ฅผ ๋๋ฅผ ์ ์๋ ๋ฒ์๋ฅผ ๋๋ ค์ฃผ๋ ๊ฒ์ด๋ค.
<TouchableOpacity
activeOpacity={0.8} //๊น๋นก์์ ์กฐ์ ํ๋ ๊ธฐ๋ฅ
hitSlop={{ top: 32, bottom: 32, left: 32, right: 32 }} //ํฐ์น์์ญ์ ํ์ฅ
>
<Text>์๋ฃ</Text>
</TouchableOpacity>
์ด๋ ๊ฒ ์ ์ผ๋ฉด ํฐ์น ์์ญ์ด ๋์๋จ๋ถ์ผ๋ก 32์ฉ ๋์ด๋๋ค.
4. Spacer, Divider
๊ฐ ํ๊ทธ๋ค ๊ฐ์ ๋์ ์ฆ Margin์ ์ฃผ๋ ์ปดํฌ๋ํธ์ด๋ค.
๋ค๋ฅธ ์ญํ ์์ด, ์ปดํฌ๋ํธ๋ค ๊ฐ์ ๊ณต๋ฐฑ์ ์ฃผ๋ ์ญํ ๋ก๋ง ์ฐ์ธ๋ค.