Skip to content
On this page

Notify 消息提示

vue
<template>
  <ta-group title="基础用法">
    <ta-cell label="主要" isLink @click="show({ title: '通知文本' })"></ta-cell>
    <ta-cell label="成功" isLink @click="show({ title: '成功文本', type: 'success' })"></ta-cell>
    <ta-cell label="警告" isLink @click="show({ title: '警告文本', type: 'warning' })"></ta-cell>
    <ta-cell label="危险" isLink @click="show({ title: '危险文本', type: 'danger' })"></ta-cell>
  </ta-group>
  <ta-group title="自定义图标">
    <ta-cell
      label="成功"
      isLink
      @click="
        show({
          title: '成功文本',
          type: 'success',
          icon: 'CheckCircleOutlined'
        })
      "
    ></ta-cell>
    <ta-cell
      label="警告"
      isLink
      @click="
        show({
          title: '警告文本',
          type: 'warning',
          icon: 'ExclamationCircleOutlined'
        })
      "
    ></ta-cell>
    <ta-cell
      label="危险"
      isLink
      @click="
        show({
          title: '危险文本',
          type: 'danger',
          icon: 'CloseCircleOutlined'
        })
      "
    ></ta-cell>
  </ta-group>
  <ta-group title="其他">
    <ta-cell
      label="自定义时长"
      isLink
      @click="show({ title: '5秒后消失', duration: 5000 })"
    ></ta-cell>
    <ta-cell
      label="自定义颜色"
      isLink
      @click="
        show({
          title: '深色调',
          icon: 'InfoCircleOutlined',
          backgroundColor: '#ff4d4f',
          color: '#ffffff'
        })
      "
    ></ta-cell>
    <ta-cell
      label="手动关闭"
      isLink
      @click="show({ title: '常驻可手动关闭', duration: 0, closable: true })"
    ></ta-cell>
  </ta-group>
  <ta-group title="API">
    <ta-cell label="showNotify" isLink @click="callShowApi"></ta-cell>
    <ta-cell label="hideNotify" isLink @click="callHideApi"></ta-cell>
  </ta-group>
  <ta-notify
    v-model:visible="visible"
    :title="title"
    :type="type"
    :backgroundColor="backgroundColor"
    :color="color"
    :icon="icon"
    :duration="duration"
    :closable="closable"
    @cancel="onCancel"
  ></ta-notify>
</template>

<script lang="ts">
import { defineComponent, ref } from 'vue'
import { showNotify, hideNotify, type StateType, type PopupOnCancel } from '@/index'

interface showArgs {
  icon?: any
  title?: string
  backgroundColor?: string
  color?: string
  type?: StateType
  closable?: boolean
  duration?: number
}

export default defineComponent({
  name: 'ExpNotify',
  setup() {
    const visible = ref(false)
    const title = ref('浅色调')
    const icon = ref('InfoCircleOutlined')
    const backgroundColor = ref('#8bc7ff')
    const color = ref('#292e36')
    const duration = ref(0)
    const type = ref<StateType>('primary')
    const closable = ref(false)

    function callShowApi() {
      showNotify({
        title: '通知文本',
        duration: 5000,
        closable: true,
        success(res) {
          console.log('success', res)
        }
      })
    }

    function callHideApi() {
      hideNotify({
        success(res) {
          console.log('success', res)
        }
      })
    }

    function show(args: showArgs) {
      icon.value = args.icon || null
      title.value = args.title || ''
      backgroundColor.value = args.backgroundColor || ''
      color.value = args.color || ''
      type.value = args.type || 'primary'
      closable.value = args.closable || false
      duration.value = args.duration ?? 1500
      visible.value = true
    }

    const onCancel: PopupOnCancel = res => {
      console.log('cancel', res)
    }

    return {
      visible,
      title,
      icon,
      backgroundColor,
      color,
      duration,
      type,
      closable,

      callShowApi,
      callHideApi,
      show,
      onCancel
    }
  }
})
</script>

Import

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

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

Import Type

组件导出的类型定义:

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

Props

属性类型默认值必填说明
v-model:visiblebooleanfalse是否显示
titlestring提示内容
closablebooleanfalse是否显示关闭按钮
iconstring图标,使用 Icon 组件,图标优先级高于 type
typeStateType'default'提示类型
durationnumber0visible=true 展示后,duration 毫秒后消失,0 为不消失,在 v-model:visible 下生效
colorstring自定义色彩,支持 hex rgb hsl 等写法,详细效果查看

StateType 的合法值

说明
default警告,同 warning
primary提示
success成功
warning警告
danger强烈警告

Events

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

VisibleState 值说明

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

showNotify(object)

显示消息提示。

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

object

属性类型默认值必填说明
titlestring提示内容
typeStateType'default'提示类型
iconstring图标,使用 Icon 组件,图标优先级高于 type
durationnumber1500展示时长(单位 ms),值为 0 时,notify 不会消失
colorstring自定义色彩,支持 hex rgb hsl 等写法,详细效果查看
closablebooleanfalse是否显示关闭按钮
success() => void接口调用成功的回调函数
fail(e: Error) => void接口调用失败的回调函数(不传入 fail 遇错误直接抛出)
complete() => void接口调用结束的回调函数(调用成功、失败都会执行)

Usage

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

js
showNotify({
  title: '提示内容',
  duration: 2000
})

hideNotify([object])

隐藏消息提示框。

object

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

Usage

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

js
hideNotify()