Skip to content

Message メッセージ ​

グローバルなメッセージ提示サービスです。マウントポイントパターンを採用 —— ミニプログラムは JS で DOM を作成できないため、ページにまずマウントポイントコンポーネントを置く必要があります。

マウントポイントを置く ​

メッセージを表示したいページ(または常駐するルートラップコンポーネント)に 1 回置きます:

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 で 明確な警告が出ます。無言のフォールバックは行いません。これは意図的な設計です。無言のフォールバックは「呼び出しは効いているように見えて実際には何も起きない」を 隠れた bug にしてしまうからです。

メソッド ​

メソッド説明パラメータ
(直接呼び出し)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 にマウントしますが、ミニプログラムにはこの概念がなく、マウント位置は <lh-message /> がページ内にある位置で決まります。
  • 進退アニメーションは CSS transition + setTimeout で時間を合わせます(transitionend はミニプログラムでは信頼できません)。
  • 通知系コンポーネント(Notification)は初版では未実装のため、Message で代替してください。