Skip to content
On this page

Toast 轻提示

vue
<template>
  <ta-group title="基础用法">
    <ta-cell label="纯文字" isLink @click="onShowToast({ title: '提示文本' })"></ta-cell>
    <ta-cell
      label="长文字"
      isLink
      @click="onShowToast({ title: '提示文本提示文本提示文本提示文本提示文本' })"
    ></ta-cell>
    <ta-cell
      label="成功"
      isLink
      @click="onShowToast({ title: '成功文本', type: 'success' })"
    ></ta-cell>
    <ta-cell
      label="失败"
      isLink
      @click="onShowToast({ title: '失败文本', type: 'fail' })"
    ></ta-cell>
    <ta-cell
      label="加载中"
      isLink
      @click="onShowToast({ title: '加载文本', type: 'loading' })"
    ></ta-cell>
  </ta-group>
  <ta-group title="自定义图标">
    <ta-cell
      label="收藏"
      isLink
      @click="onShowToast({ title: '已收藏', icon: 'StarFilled' })"
    ></ta-cell>
    <ta-cell
      label="警告"
      isLink
      @click="onShowToast({ title: '警告文本', icon: 'ExclamationCircleOutlined' })"
    ></ta-cell>
  </ta-group>
  <ta-group title="其他">
    <ta-cell
      label="自定义时长"
      isLink
      @click="onShowToast({ title: '5秒后消失', duration: 5000 })"
    ></ta-cell>
    <ta-cell
      label="展示透明蒙层"
      isLink
      @click="onShowToast({ title: '不可穿透', showMask: true })"
    ></ta-cell>
  </ta-group>
  <ta-group title="API">
    <ta-cell
      label="showToast"
      isLink
      @click="showToast({ title: '提示文本', duration: 5000 })"
    ></ta-cell>
    <ta-cell label="hideToast" isLink @click="hideToast()"></ta-cell>
    <ta-cell label="showLoading" isLink @click="showLoading({ title: '加载中' })"></ta-cell>
    <ta-cell label="hideLoading" isLink @click="hideLoading()"></ta-cell>
  </ta-group>
  <ta-toast
    v-model:visible="visible"
    :title="title"
    :type="type"
    :showMask="showMask"
    :icon="icon"
    :duration="duration"
  ></ta-toast>
</template>

<script lang="ts">
import { defineComponent, onBeforeUnmount, ref } from 'vue'
import { showToast, showLoading, hideToast, hideLoading, type ToastType } from '@/index'

interface showArgs {
  icon?: any
  title?: string
  showMask?: boolean
  type?: ToastType
  duration?: number
}

export default defineComponent({
  name: 'ExpToast',
  setup() {
    const visible = ref(false)
    const title = ref('')
    const type = ref<ToastType>('default')
    const showMask = ref(false)
    const icon = ref()
    const duration = ref(0)

    function onShowToast(args: showArgs) {
      icon.value = args.icon || undefined
      title.value = args.title || ''
      showMask.value = args.showMask || false
      type.value = args.type || 'default'
      duration.value = args.duration ?? 1500
      visible.value = true
    }

    onBeforeUnmount(() => hideLoading())

    return {
      visible,
      title,
      type,
      showMask,
      icon,
      duration,

      onShowToast,
      showToast,
      showLoading,
      hideToast,
      hideLoading
    }
  }
})
</script>

Import

js
import { TaToast } from 'tantalum-ui-mobile'

具体的引入方式可以参考引入组件

Import Type

组件导出的类型定义:

ts
import type { ToastType, VisibleState, PopupOnVisibleStateChange } from 'tantalum-ui-mobile'

Props

属性类型默认值必填说明
v-model:visiblebooleanfalse是否显示
titlestring提示的内容
typeToastType'default'类型,'default'无图标, 可选 'success', 'loading', 'fail'
imagestring图标,优先级高于 type 自带的图标
show-maskbooleanfalse是否显示透明蒙层,防止触摸穿透
durationnumber0visible=true 展示后,duration 毫秒后消失,0 为不消失,在 v-model:visible 下生效

ToastType 的合法值

说明
default不显示图标,此时 title 文本最多可显示两行
success显示成功图标,此时 title 文本最多显示 7 个汉字长度
loading显示加载图标,此时 title 文本最多显示 7 个汉字长度
fail显示错误图标,此时 title 文本最多显示 7 个汉字长度

Events

事件描述回调函数参数TypeScript 函数
visible-state-change展示隐藏时触发payload: { state: VisibleState }PopupOnVisibleStateChange

VisibleState 值说明

说明备注
show展示时触发
shown展示且动画结束后触发
hide隐藏时触发可能携带其他参数 cancel, maskClick, closeClick 等
hidden隐藏且动画结束后触发可能携带其他参数 cancel, maskClick, closeClick 等

showToast(object)

显示消息提示框。

注:Toast 接口目前仅支持单例模式。

object

属性类型默认值必填说明
titlestring提示的内容
typeToastType'default'类型,可选 'success', 'loading', 'fail'
iconstring图标,使用 Icon 组件,优先级高于 type
durationnumber1500提示的延迟关闭时间
showMaskbooleanfalse是否显示透明蒙层,防止触摸穿透
success() => void接口调用成功的回调函数
fail(e: Error) => void接口调用失败的回调函数(不传入 fail 遇错误直接抛出)
complete() => void接口调用结束的回调函数(调用成功、失败都会执行)

Usage

具体调用方式可以参考API 调用

js
showToast({
  title: '成功',
  type: 'success',
  duration: 2000
})

hideToast([object])

隐藏消息提示框。

object

属性类型默认值必填说明
success() => void接口调用成功的回调函数
fail(e: Error) => void接口调用失败的回调函数(不传入 fail 遇错误直接抛出)
complete() => void接口调用结束的回调函数(调用成功、失败都会执行)

Usage

具体调用方式可以参考API 调用

js
hideToast()

showLoading(object)

显示 loading 提示框。需主动调用 hideLoading 才能关闭提示框。

object

属性类型默认值必填说明
titlestring提示的内容
showMaskbooleanfalse是否显示透明蒙层,防止触摸穿透
success() => void接口调用成功的回调函数
fail(e: Error) => void接口调用失败的回调函数(不传入 fail 遇错误直接抛出)
complete() => void接口调用结束的回调函数(调用成功、失败都会执行)

Usage

具体调用方式可以参考API 调用

js
showLoading({
  title: '加载中'
})

hideLoading([object])

隐藏 loading 提示框。

object

属性类型默认值必填说明
success() => void接口调用成功的回调函数
fail(e: Error) => void接口调用失败的回调函数(不传入 fail 遇错误直接抛出)
complete() => void接口调用结束的回调函数(调用成功、失败都会执行)

Usage

具体调用方式可以参考API 调用

js
hideLoading()