كل المكوّنات

MotionHighlight

علامات تبويب أو مفاتيح مقسّمة أو تنقّل من البيانات، مع تمييز واحد ينتقل إلى الاختيار.

الويبReact Nativeالاختيار والصفحات

جرّبه

جارٍ تجهيز المثال…

أقصر استخدام

Tabs.jsx
<MotionHighlight
  items={['Overview', 'Activity', 'Settings']}
  value={tab}
  onValueChange={setTab}
  hover
/>;

ما يتولّاه عنك

  • تمييز واحد يتحرك ويتغيّر حجمه بين العناصر؛ نسّقه عبر highlightClassName.
  • تأتي العناصر من items، والمفاتيح من getKey، والتسميات من renderItem.
  • يجعله hover يتبع المؤشر ثم يعود إلى الاختيار.
  • يمكن للعناصر أن تلتف على عدة صفوف، ويتبعها التمييز.
  • يُعاد القياس تلقائيًا عند تحميل الخطوط وتغيّر التخطيط.

استخدمه لـ

  • علامات تبويب صفحة.
  • شريط مرشّحات.
  • مفتاح مقسّم في نموذج إعدادات.

Props

Propالنوعالافتراضيالوصف
itemsreadonly T[]—إلزاميمصفوفة بياناتك.
valuekey | null—إلزاميمفتاح العنصر المميَّز؛ وnull يخفي التمييز.
onValueChange(key, item) => voidيعمل مع المفتاح والعنصر حين يُضغط عنصر.
getKey(item) => string | numberitem.idتعيد مفتاحًا فريدًا ثابتًا لعنصر. افتراضيًا item.id، أو العنصر نفسه للنصوص والأرقام.
renderItem(item, { selected, index }) => ReactNodeitem.labelيرسم عنصرًا؛ ويتلقى ما إذا كان مختارًا.
hoverbooleanfalseاتبع المؤشر فوق العناصر وعُد إلى value عند المغادرة (الويب).
itemAselement'button'العنصر لكل بند.
itemClassNamestringصنف لعنصر كل بند؛ ويضبط itemStyle نمطه المضمّن.
highlightClassNamestringصنف التمييز؛ ويضبط highlightStyle نمطه المضمّن.
transitionTransitionspringمنحنى توقيت { duration, easing } أو نابض { tempo: 'spring', spring }. تحتفظ النوابض بزخمها عند المقاطعة.

تذهب props الأخرى إلى العنصر المعروض، فتعمل className وstyle ومعالجات الأحداث كالمعتاد.

الويب وReact Native

يُعرض كل عنصر افتراضيًا كـ button (ويغيّره itemAs)؛ والضغط عليه يستدعي onValueChange(key, item).

في React Native العناصر من نوع Pressable؛ ويعمل الموضع على المشغّل الأصلي، والحجم على عرض متداخل يقوده JavaScript.

مستخدم في هذه الأمثلة

بحث

اكتب للبحث في التوثيق.