คอมโพเนนต์ Modal ช่วยในการแสดงมุมมองเนื้อหาเหนือเนื้อหา UI ของคุณ
ส่วนประกอบโมดอลพื้นฐานมีดังนี้ -
<Modal animationType="slide" transparent={true} visible={modalVisible} onRequestClose={() => { Alert.alert("Modal has been closed."); }}> Your Content Here</Modal> ในการทำงานกับองค์ประกอบ Modal คุณต้องนำเข้าก่อนดังนี้ −
import { Modal } from "react-native"; คุณสมบัติพื้นฐานของ Modal Window มีดังนี้ -
| Sr.No | อุปกรณ์ประกอบฉาก &คำอธิบาย |
|---|---|
| 1 | ประเภทแอนิเมชั่น คุณสมบัตินี้จัดการแอนิเมชั่นสำหรับการแสดงหน้าต่างโมดอล เป็น enum ที่มีค่าสามค่า −slide, fade และ none |
| 2 | onDismiss คุณสมบัตินี้ใช้ฟังก์ชันที่จะถูกเรียกเมื่อปิดหน้าต่างโมดอล |
| 3 | onOrientationChange ฟังก์ชันการโทรกลับที่ถูกเรียกเมื่อมีการเปลี่ยนแปลงการวางแนวอุปกรณ์เมื่อแสดงหน้าต่างโมดอล |
| 4 | ออนโชว์ ฟังก์ชันจะถูกส่งผ่านเป็นค่า prop ที่เรียกเมื่อหน้าต่าง modal ปรากฏขึ้น |
| 5 | รูปแบบการนำเสนอ คุณสมบัตินี้จัดการการแสดงผลของหน้าต่างโมดอล ค่าที่ใช้ได้คือ fullScreen,pageSheet, formSheet และ overFullScreen |
| 6 | โปร่งใส อุปกรณ์ประกอบฉากนี้จะตัดสินใจให้มุมมองที่โปร่งใสหรือเติมเต็มมุมมองทั้งหมดสำหรับหน้าต่างโมดอล |
| 7 | มองเห็นได้ คุณสมบัตินี้จะตัดสินว่าหน้าต่างโมดอลของคุณสามารถมองเห็นได้หรือไม่ |
ตัวอย่างที่ 1:การแสดงหน้าต่างโมดอล
ในการทำงานกับองค์ประกอบ Modal คุณต้องนำเข้าก่อนดังนี้ −
import { Modal } from "react-native"; ในการแสดงหน้าต่างโมดอล คุณสามารถเลือกแอนิเมชั่นที่คุณต้องการให้แสดงได้ ตัวเลือกเป็นแบบสไลด์ จาง และไม่มี ในตัวอย่างด้านล่าง เราต้องการแสดงหน้าต่างโมดอลอย่างง่ายพร้อมข้อความและปุ่มดังที่แสดงด้านล่าง −
<Modal
animationType="slide"
transparent={true}
visible={isVisible}
>
<View style={styles.centeredView}>
<View style={styles.myModal}>
<Text style={styles.modalText}>Modal Window Testing!</Text>
<Button style={styles.modalButton} title="Close" onPress={() => {setModalVisiblility(false); }}/>
</View>
</View>
</Modal> ตัวแปร isVisible ถูกกำหนดให้กับคุณสมบัติที่มองเห็นได้ เป็นเท็จโดยค่าเริ่มต้น กล่าวคือ หน้าต่างโมดอลจะไม่แสดงตามค่าเริ่มต้น isVisible คุณสมบัติเริ่มต้นดังแสดงด้านล่าง -
const [isVisible, setModalVisiblility] = useState(false);
setModalVisiblility จะอัปเดตตัวแปร isVisible จากเท็จเป็นจริงและในทางกลับกัน
ปุ่มปิดที่กำหนดไว้ภายในคอมโพเนนต์
ในการแสดงหน้าต่างโมดอลจะมีปุ่มอยู่ด้านนอกองค์ประกอบ
<View style={styles.centeredView}>
<Modal
animationType="slide"
transparent={true}
visible={isVisible}
>
<View style={styles.centeredView}>
<View style={styles.myModal}>
<Text style={styles.modalText}>Modal Window Testing!</Text>
<Button style={styles.modalButton} title="Close" onPress={() =>{setModalVisiblility(false); }}/>
</View>
</View>
</Modal>
<Button title="Click Me" onPress={() => {
setModalVisiblility(true);
}}
/>
</View> นี่คือรหัสการทำงานที่แสดง/ซ่อนหน้าต่างโมดอล
import React, { useState } from "react";
import { Button, Alert, Modal, StyleSheet, Text, View } from "react-native";
const App = () => {
const [isVisible, setModalVisiblility] = useState(false);
return (
<View style={styles.centeredView}>
<Modal
animationType="slide"
transparent={true}
visible={isVisible}
>
<View style={styles.centeredView}>
<View style={styles.myModal}>
<Text style={styles.modalText}>Modal Window Testing!</Text>
<Button style={styles.modalButton} title="Close" onPress={() =>{setModalVisiblility(false); }}/>
</View>
</View>
</Modal>
<Button title="Click Me" onPress={() => {
setModalVisiblility(true);
}}
/>
</View>
);
};
const styles = StyleSheet.create({
centeredView: {
flex: 1,
justifyContent: "center",
alignItems: "center",
marginTop: 22
},
myModal: {
width:200,
height:200,
margin: 20,
backgroundColor: "white",
borderRadius: 20,
padding: 35,
alignItems: "center",
shadowColor: "#000",
shadowOffset: {
width: 0,
height: 2
},
shadowOpacity: 0.30,
shadowRadius: 4,
elevation: 5
},
modalText: {
marginBottom: 20,
textAlign: "center"
},
modalButton: {
marginBottom: 50,
}
});
export default App; ผลลัพธ์
