Skip to content

Message (رسالة) ​

خدمة الرسائل الفورية العامة. تعتمد نمط نقطة التركيب — لا يستطيع البرنامج المصغر إنشاء DOM عبر JS، فلابد من وجود مكوّن نقطة التركيب في الصفحة أولًا.

وضع نقطة التركيب ​

ضعها مرة واحدة في الصفحات التي تحتاج رسائل فورية (أو في مكوّن جذر دائم):

vue
<template>
  <lh-config-provider>
    <view><!-- محتوى الصفحة --></view>
    <lh-message />
  </lh-config-provider>
</template>

الاستدعاء ​

ts
import { useLhMessage } from '@lh-ui/uniapp'

const message = useLhMessage()

message.success('تم الحفظ بنجاح')
message.info('رسالة معلومات')
message.warning('رسالة تحذير')
message.danger('رسالة خطأ')
message.error('رسالة خطأ (مرادف danger)')

// رسالة تحميل لا تُغلق تلقائيًا (duration: 0)، تُغلق يدويًا
const handle = message.loading('جارٍ التحميل...')
// ... بعد اكتمال العملية غير المتزامنة
handle.close()

// إغلاق الكل
message.closeAll()

بدون نقطة تركيب يُعطى تحذير

إذا استدعيت useLhMessage() دون وجود <lh-message /> في الصفحة، فسيُصدر console.error تحذيرًا صريحًا في وقت التطوير، دون تخفيض صامت. هذا تصميم مقصود: فالتخفيض الصامت يحوّل «الاستدعاء الذي يبدو ناجحًا، لكن دون أي استجابة» إلى خطأ خفي.

الدوال ​

الدالةالوصفالمعاملات
(النداء المباشر)message('xxx') يكافئ message.info('xxx')(options: LhMessageOptions | string)
success / info / warning / danger / errorيُظهر رسالة من النوع المقابل(content: string, options?: Partial<LhMessageOptions>)
loadingيُظهر رسالة تحميل لا تُغلق تلقائيًا (duration: 0)، ويُرجع handle للإغلاق اليدوينفس ما سبق
closeيُغلق الرسالة ذات المعرّف id(id: number)
closeAllيُغلق الكل—

LhMessageOptions ​

الخاصيةالوصفالنوعالافتراضي
contentالنص (مطلوب)string—
typeالنوع'success' | 'info' | 'warning' | 'danger' | 'loading''info'
durationمدة العرض (بالملي ثانية)، 0 يعني عدم الإغلاق التلقائيnumber3000
showCloseإظهار زر الإغلاقbooleanfalse
offsetالإزاحة عن الأعلى (px)number—
onCloseاستدعاء الإغلاق() => void—

الإعداد العام ​

ts
const message = useLhMessage()
message.config({ duration: 2000, max: 5, offset: 20 })
الإعدادالوصفالافتراضي
durationمدة العرض الافتراضية (بالملي ثانية)3000
maxأقصى عدد للرسائل في الشاشة الواحدة—
offsetالإزاحة عن الأعلى—

الفروق عن نسخة Vue3

  • لا يوجد appendTo: في الويب يُركَّب على document.body وهذا المفهوم غير موجود في البرنامج المصغر، فيحدّد موضع التركيب مكان <lh-message /> داخل الصفحة.
  • تُحاذاة مدة حركتي الدخول والخروج عبر CSS transition + setTimeout (transitionend غير موثوق في البرنامج المصغر).
  • مكوّن الإشعارات (Notification) غائب في الإصدار الأول، استخدم Message بديلًا.