1. ์์ด์ฝ์ ํฐ์น๋ฒ์ ๋ํ๋ ๋ฒ
(1) View๋ก ๋์ด์๋ icon ์ปดํฌ๋ํธ๋ฅผ TouchableOpacity๋ก ๋ฐ๊พผ๋ค.
(2) hitslop ์ด์ฉ
TouchableOpacity์ hitslop ์์ฑ์ ํด๋น ์์ด์ฝ์ ํฐ์น ๋ฒ์๋ฅผ ๋๋ ค์ค๋ค. top, bottom, left, right์ ์์ ์๊ธฐ๊ฐ ๋๋ ค์ฃผ๊ณ ์ถ์ ๋งํผ์ ์ ์ด์ฃผ๋ฉด ๋๋ค.
const IconButton = ({name, bgColor}) => {
return(
<TouchableOpacity hitSlop={{top: 15, bottom: 15}} style={{paddingHorizontal: 6, backgroundColor: bgColor}}>
<Ionicons name={name} size={24} color="black" />
</TouchableOpacity>
)
};
** ๊ณ๋ค๋ฆฌ
์ปดํฌ๋ํธ์์ ์์ฑ์ props๋ก ๋ฐ์ ๊ฒฝ์ฐ, {} ์์ด () ์์ ๋ฐ๋ก ์ ์ด์ฃผ๋ฉด ๋์๋ค.
์๋ํ๋ฉด, props๋ ํ๋์ ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ด๋ค. ์ค๋ฅ ์ฝ๋ค๋ฅด ์ฝ์ด๋ณด๋ () ์์๋ ๊ฐ์ฒด๋ ๋ฐฐ์ด๊ฐ์ ๊ตฌ์กฐ์ฒด๋ง ๋ค์ด์ฌ ์ ์๋ ๊ฒ ๊ฐ๋ค.
์์ฒ๋ผ name, bgColor๋ฅผ ๋ฃ์๊ฑฐ๋ฉด {} ๋ก ๊ฐ์ธ์ค์ผ ํ๋ค. ์๋ํ๋ฉด ์ฐ๋ฆฌ๊ฐ name์ด๋ผ๋ ๋ฌธ์๋ฅผ ์ธ ๊ฒ์ด ์๋๋ผ name์ ๊ฐ, bgColor์ ๊ฐ์ ์ธ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
expo app ์ ํ๋ค๋ฉด ๋ฉ๋ด๊ฐ ๋์ค๊ณ ๊ฑฐ๊ธฐ์ ์น์ ๊ฐ๋ฐ์ ๋๊ตฌ์ฒ๋ผ, ๋์จ ํ๋ก ํธ ์๋๋ค์ ๋ฏ์ด๋ณผ ์ ์๋ ๊ธฐ๋ฅ์ด ์๋ค.
2. ์ค์ค๋ก ํด๋ณด๊ธฐ
const Icons = ({name, isMeterial, isIron}) => {
return (
<TouchableOpacity hitSlop={{top: 10, bottom: 10}} style={styles.icons}>
{isMeterial&& <MaterialCommunityIcons name={name} size={30} color="black" />}
{isIron&&<Ionicons name="settings-outline" size={30} color="black" style={styles.icons} />}
</TouchableOpacity>
)
}