Skip to content

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 — не закрывать автоматически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: на web-стороне монтирование идёт в document.body, в Mini Program такого понятия нет — положение точки монтирования определяется расположением <lh-message /> на странице.
  • Анимации появления и скрытия — на CSS transition + setTimeout с выровненной длительностью (transitionend в Mini Program ненадёжен).
  • Компонент класса Notification в первом выпуске отсутствует, используйте Message.