คอมโพเนนต์ทั้งหมด
MotionSheet
ชีตด้านล่าง ชีตด้านบน หรือลิ้นชักด้านข้าง พร้อมจุดหยุด การสะบัด และการส่งต่อการเลื่อน
เว็บReact Nativeโอเวอร์เลย์
ลองดู
การใช้งานที่สั้นที่สุด
Filters.jsx<MotionSheet open={open} onOpenChange={setOpen} detents={[0.45, 0.92]}>
<FilterList />
</MotionSheet>;
สิ่งที่มันจัดการให้คุณ
- ตามการลาก มีแรงต้านเมื่อเลยจุดหยุดที่ใหญ่ที่สุด และหยุดตามความเร็วที่คุณปล่อย การสะบัดจะเลื่อนหนึ่งจุดหยุดหรือปิด
- การลากด้วยการสัมผัสจะส่งต่อให้เนื้อหาที่เลื่อนได้: ลากลงจะเลื่อนเนื้อหากลับไปบนสุดก่อนชีตจะขยับ
- จุดหยุดเป็นสัดส่วนของหน้าจอ พิกเซล หรือ
'content' สำหรับขนาดตามธรรมชาติของเนื้อหา - ชีตแบบโมดัลเก็บโฟกัสไว้ข้างใน ทำให้หน้าไม่ตอบสนอง และปิดด้วย Escape หรือฉากหลัง
ใช้สำหรับ
- แผงตัวกรอง
- เมนูแชร์
- ลิ้นชักนำทางด้วย
side="start"
Props
| Prop | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|
open | boolean | false | ชีตแสดงอยู่หรือไม่ |
|---|
onOpenChange | (open) => void | | ทำงานพร้อม false เมื่อชีตถูกปิดด้วยการลาก การแตะ หรือ Escape |
|---|
detents | (number | 'content')[] | ['content'] | ขนาดขณะพัก: สัดส่วนของหน้าจอ พิกเซล หรือ 'content' |
|---|
detent | number | | index ของจุดหยุดแบบควบคุม |
|---|
defaultDetent | number | 0 | index ของจุดหยุดที่ใช้เมื่อเปิดโดยไม่มี detent |
|---|
onDetentChange | (index) => void | | ทำงานพร้อม index ของจุดหยุดที่ชีตหยุดนิ่ง |
|---|
side | 'bottom' | 'top' | 'start' | 'end' | 'bottom' | ขอบที่ชีตเข้ามา |
|---|
modal | boolean | true | เพิ่มฉากหลัง เก็บโฟกัสไว้ข้างใน และทำให้หน้าไม่ตอบสนอง |
|---|
dismissible | boolean | true | การลากเลยจุดหยุดที่เล็กที่สุด ฉากหลัง และ Escape จะปิดมัน |
|---|
backdropClassName | string | | คลาสของฉากหลัง backdropStyle กำหนดสไตล์ inline ของมัน |
|---|
transition | Transition | spring | เส้นโค้ง timing { duration, easing } หรือสปริง { tempo: 'spring', spring } สปริงรักษาโมเมนตัมไว้เมื่อถูกขัดจังหวะ |
|---|
props อื่นจะส่งต่อไปยังองค์ประกอบที่เรนเดอร์ className, style และตัวจัดการเหตุการณ์จึงทำงานตามปกติ