๋ชจ๋ฐ์ผ ์ฑ์์ ๋ชจ๋ฌ์ ์ ๋ง ์์ฃผ ์ฐ์ธ๋ค.
React Native์์๋ ๊ธฐ๋ณธ <Modal />
์ด ์์ง๋ง,
์ค์ ๋ก ์ฑ์ ๋ง๋ค๋ค ๋ณด๋ฉด ํ๋จ์์ ์ฌ๋ผ์ค๋ ์ํธ, ์ค์ฒฉ๋ ๋ชจ๋ฌ, ๋คํฌ ๋ฐฐ๊ฒฝ ์ฒ๋ฆฌ ๋ฑ
๊ธฐ๋ณธ ๊ธฐ๋ฅ๋ง์ผ๋ก๋ ๋ถ์กฑํ ์ํฉ์ด ์์ฃผ ์๊ธด๋ค.
์ด๋ฒ ๊ธ์ React Native์์ ์ฌ์ฉํ ์ ์๋
๋ชจ๋ฌ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ 3๊ฐ์ง๋ฅผ ์ ๋ฆฌํ๋ค.
import { Modal, View, Text, Button } from 'react-native';
<Modal
visible={isVisible}
transparent={true}
animationType="slide"
onRequestClose={() => setIsVisible(false)}
>
<View style={styles.overlay}>
<View style={styles.modalBox}>
<Text>์๋ด ๋ฉ์์ง</Text>
<Button title="๋ซ๊ธฐ" onPress={() => setIsVisible(false)} />
</View>
</View>
</Modal>
visible
๋ก ์ด๊ณ ๋ซ์ transparent
์ค์ ์ ๋ฐฐ๊ฒฝ ์ด๋ก๊ฒ ๊ฐ๋ฅ onRequestClose
)โ
๊ฐ๋จํ ์๋ฆผ, ํ์ธ์ฐฝ์ ์ ์ฉ
โ ์ค์ฒฉ ๋ชจ๋ฌ, ์ปค์คํ
UI ์ ์ฝ ๋ง์
const styles = StyleSheet.create({
overlay: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: 'rgba(0,0,0,0.5)',
},
modalBox: {
backgroundColor: 'white',
padding: 24,
borderRadius: 10,
width: '80%',
},
});
npm install react-native-modalize
import { Modalize } from 'react-native-modalize';
const modalRef = useRef<Modalize>(null);
<Modalize ref={modalRef} snapPoint={300}>
<Text>์ต์
๋ชฉ๋ก</Text>
</Modalize>
โ
์นด์นด์คํก, ์ธ์คํ, ์ ํ๋ธ ๋ฑ ์ฃผ์ ์ฑ์ด ์ฌ์ฉ
โ
๋ชจ๋ฌ์ฒ๋ผ UX๋ฅผ ์ฐจ๋จํ์ง ์๊ณ ๋ ๋ ์ด์ด ์ ๊ณต ๊ฐ๋ฅ
โ ์ค์น ํ์, ์ปจํธ๋กค ๋ก์ง ์ถ๊ฐ๋จ
import { Portal, Modal } from 'react-native-paper';
<Portal>
<Modal visible={visible} onDismiss={() => setVisible(false)}>
<Text>๋ค๋ฅธ ์ปดํฌ๋ํธ ์์ ๋ ์๋ ๋ชจ๋ฌ</Text>
</Modal>
</Portal>
โ
์ฌ๋ฌ ์ปดํฌ๋ํธ์์ ๋ชจ๋ฌ ์ปจํธ๋กค ์ ์ ์ฉ
โ
๋คํฌ ์ค๋ฒ๋ ์ด, ๋ค ์ฒ๋ฆฌ ์์ฐ์ค๋ฝ๊ฒ ๊ฐ๋ฅ
โ paper ์คํ์ผ์ ์ข
์๋จ
๋ฐฉ์ | ํน์ง | ์ถ์ฒ ์ฌ์ฉ์ฒ |
---|---|---|
๊ธฐ๋ณธ <Modal> | RN ๊ธฐ๋ณธ ์ ๊ณต, ๋จ์ ํ์ | ์๋ฆผ, ํ์ธ, ๊ฐ๋จํ ์ ๋ ฅ |
BottomSheet | UX์ ์ต์ , ์ปค์คํฐ๋ง์ด์ง ๊ฐ๋ ฅ | ์ต์ ์ ํ, ์ก์ ์ํธ |
Portal | ์์น ๋ฌด๊ดํ๊ฒ ๋์ | ์ค์ฒฉ ๋ชจ๋ฌ, ๊ธ๋ก๋ฒ ์ฒ๋ฆฌ |
onRequestClose
๋๋ setVisible(false)
๋ก ์ํ ๋ณ๊ฒฝKeyboardAvoidingView
์ ํจ๊ป ์ฌ์ฉ ์ ์
๋ ฅ์ฐฝ ๊ฐ๋ฆผ ๋ฐฉ์งTouchableWithoutFeedback
์ฒ๋ฆฌ or ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ต์
์ฌ์ฉ์ฒ์์๋ RN์ <Modal />
๋ง ์จ๋ ์ถฉ๋ถํ๋ค๊ณ ์๊ฐํ๋๋ฐ,
์ค์ ๋ก ์ฑ์ ๋ง๋ค๋ค ๋ณด๋ฉด ๋ชจ๋ฌ์ด ๊ฒน์น๊ณ ,
ํ๋จ ์ํธ๊ฐ ํ์ํ๊ณ , ๊ธ๋ก๋ฒํ๊ฒ ํธ์ถ๋ผ์ผ ํ๊ณ โฆ
๊ทธ๋๋ง๋ค ์๋ก์ด ๋๊ตฌ๋ ํจํด์ด ํ์ํ๋ค๋ ๊ฑธ ๊นจ๋ฌ์๋ค.
์ง๊ธ์ ์๋ ๊ตฌ์กฐ๋ก ๊ด๋ฆฌํ๊ณ ์์ด:
Modal
Modalize
Portal + ์ํ๊ด๋ฆฌ
๐ง "๋ชจ๋ฌ์ ๋จ์ํ UI๊ฐ ์๋๋ค. ์ฑ์ ํ๋ฆ์ ๋์ง ์๋ UX ์ ๋ต์ด๋ค."