Toast 轻提示

import {
  TaCell,
  TaGroup,
  TaToast,
  ToastType,
  PopupOnVisibleStateChange,
  showToast,
  showLoading,
  hideToast,
  hideLoading
} from '@/index'
import { useState } from 'react'

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

export default function ExpToast() {
  const [icon, setIcon] = useState<string>()
  const [title, setTitle] = useState('')
  const [showMask, setShowMask] = useState(false)
  const [type, setType] = useState<ToastType>()
  const [duration, setDuration] = useState(0)
  const [visible, setVisible] = useState(false)

  function onShow(args: showArgs) {
    setIcon(args.icon)
    setTitle(args.title ?? '')
    setShowMask(!!args.showMask)
    setType(args.type)
    setDuration(args.duration ?? 1500)
    setVisible(true)
  }

  const onVisibleStateChange: PopupOnVisibleStateChange = res => {
    console.log('onVisibleStateChange', res)
  }

  return (
    <>
      <TaGroup title="基础用法">
        <TaCell
          label="纯文字"
          isLink
          onClick={() => onShow({ title: '提示文本' })}
        />
        <TaCell
          label="长文字"
          isLink
          onClick={() =>
            onShow({ title: '提示文本提示文本提示文本提示文本提示文本' })
          }
        />
        <TaCell
          label="成功"
          isLink
          onClick={() => onShow({ title: '成功文本', type: 'success' })}
        />
        <TaCell
          label="失败"
          isLink
          onClick={() => onShow({ title: '失败文本', type: 'fail' })}
        />
        <TaCell
          label="加载中"
          isLink
          onClick={() => onShow({ title: '加载文本', type: 'loading' })}
        />
      </TaGroup>
      <TaGroup title="自定义图标">
        <TaCell
          label="收藏"
          isLink
          onClick={() => onShow({ title: '已收藏', icon: 'StarFilled' })}
        />
        <TaCell
          label="警告"
          isLink
          onClick={() =>
            onShow({
              title: '警告文本',
              icon: 'ExclamationCircleOutlined'
            })
          }
        />
      </TaGroup>
      <TaGroup title="其他">
        <TaCell
          label="自定义时长"
          isLink
          onClick={() => onShow({ title: '5秒后消失', duration: 5000 })}
        />
        <TaCell
          label="展示透明蒙层"
          isLink
          onClick={() => onShow({ title: '不可穿透', showMask: true })}
        />
      </TaGroup>
      <TaGroup title="API">
        <TaCell
          label="showToast"
          isLink
          onClick={() => showToast({ title: '提示文本', duration: 5000 })}
        />
        <TaCell label="hideToast" isLink onClick={() => hideToast()} />
        <TaCell
          label="showLoading"
          isLink
          onClick={() => showLoading({ title: '加载中' })}
        />
        <TaCell label="hideLoading" isLink onClick={() => hideLoading()} />
      </TaGroup>
      <TaToast
        visible={visible}
        title={title}
        type={type}
        showMask={showMask}
        icon={icon}
        duration={duration}
        onUpdateVisible={v => setVisible(v)}
        onVisibleStateChange={onVisibleStateChange}
      ></TaToast>
    </>
  )
}

Import

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

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

Import Type

组件导出的类型定义:

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

Props

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

ToastType 的合法值

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

Events

事件描述回调函数参数TypeScript 函数
onVisibleStateChange展示隐藏时触发payload: { state: VisibleState }PopupOnVisibleStateChange
onUpdateVisible展示隐藏时触发visible: boolean 是否显示

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 调用

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

hideToast([object])

隐藏消息提示框。

object

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

Usage

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

hideToast()

showLoading(object)

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

object

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

Usage

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

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

hideLoading([object])

隐藏 loading 提示框。

object

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

Usage

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

hideLoading()