MotionHighlight
แท็บ ตัวควบคุมแบบแบ่งส่วน หรือการนำทางจากข้อมูล พร้อมไฮไลต์หนึ่งตัวที่เคลื่อนไปยังสิ่งที่เลือก
เว็บReact Nativeการเลือกและการแบ่งหน้า
ลองดู
กำลังเตรียมตัวอย่าง…
การใช้งานที่สั้นที่สุด
<MotionHighlight
items={['Overview', 'Activity', 'Settings']}
value={tab}
onValueChange={setTab}
hover
/>;สิ่งที่มันจัดการให้คุณ
- ไฮไลต์หนึ่งตัวเคลื่อนและเปลี่ยนขนาดระหว่างรายการ ปรับสไตล์ด้วย
highlightClassName - รายการมาจาก
itemskey มาจากgetKeyและป้ายชื่อมาจากrenderItem hoverทำให้มันตามตัวชี้และกลับไปที่สิ่งที่เลือก- รายการขึ้นบรรทัดใหม่ได้หลายแถวและไฮไลต์จะตามไป
- การโหลดฟอนต์และการเปลี่ยนเลย์เอาต์จะถูกวัดใหม่อัตโนมัติ
ใช้สำหรับ
- แท็บของหน้า
- แถบตัวกรอง
- ตัวควบคุมแบบแบ่งส่วนในฟอร์มการตั้งค่า
Props
| Prop | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
items | readonly T[] | —จำเป็น | อาร์เรย์ข้อมูลของคุณ |
value | key | null | —จำเป็น | key ของรายการที่ไฮไลต์ null ซ่อนไฮไลต์ |
onValueChange | (key, item) => void | ทำงานพร้อม key และรายการเมื่อมีการกดรายการ | |
getKey | (item) => string | number | item.id | คืน key ที่ไม่ซ้ำและคงที่ของรายการ ค่าเริ่มต้นคือ item.id หรือตัวรายการเองสำหรับสตริงและตัวเลข |
renderItem | (item, { selected, index }) => ReactNode | item.label | วาดรายการ ได้รับข้อมูลว่าถูกเลือกหรือไม่ |
hover | boolean | false | ตามตัวชี้บนรายการและกลับไปที่ value เมื่อออก (เว็บ) |
itemAs | element | 'button' | องค์ประกอบของแต่ละรายการ |
itemClassName | string | คลาสของแต่ละองค์ประกอบรายการ itemStyle กำหนดสไตล์ inline ของมัน | |
highlightClassName | string | คลาสของไฮไลต์ highlightStyle กำหนดสไตล์ inline ของมัน | |
transition | Transition | spring | เส้นโค้ง timing { duration, easing } หรือสปริง { tempo: 'spring', spring } สปริงรักษาโมเมนตัมไว้เมื่อถูกขัดจังหวะ |
props อื่นจะส่งต่อไปยังองค์ประกอบที่เรนเดอร์ className, style และตัวจัดการเหตุการณ์จึงทำงานตามปกติ
เว็บและ React Native
แต่ละรายการเรนเดอร์เป็น button โดยค่าเริ่มต้น (itemAs เปลี่ยนได้) การกดจะเรียก onValueChange(key, item)
บน React Native รายการเป็น Pressable ตำแหน่งทำงานด้วย native driver ส่วนขนาดอยู่บนวิวซ้อนที่ JavaScript ขับ