Message (сообщение)
Глобальный сервис всплывающих сообщений. Использует паттерн точки монтирования — Mini Program не может создавать 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 — не закрывать автоматически | number | 3000 |
| showClose | Показывать кнопку закрытия | boolean | false |
| offset | Смещение от верха (px) | number | — |
| onClose | Колбэк закрытия | () => void | — |
Глобальная конфигурация
ts
const message = useLhMessage()
message.config({ duration: 2000, max: 5, offset: 20 })| Параметр | Описание | По умолчанию |
|---|---|---|
| duration | Длительность показа по умолчанию (миллисекунды) | 3000 |
| max | Максимальное количество сообщений на экране | — |
| offset | Смещение от верха | — |
Отличия от версии для Vue3
- Нет
appendTo: на web-стороне монтирование идёт вdocument.body, в Mini Program такого понятия нет — положение точки монтирования определяется расположением<lh-message />на странице. - Анимации появления и скрытия — на CSS transition + setTimeout с выровненной длительностью (
transitionendв Mini Program ненадёжен). - Компонент класса Notification в первом выпуске отсутствует, используйте Message.