Skip to content

useDialog

useDialog 用于函数式调用 wd-dialog,支持 alertconfirmpromptshowclose

基础用法

页面中先声明 wd-dialog,再通过 useDialog() 打开弹框。

html
<wd-dialog />
<wd-button @click="openAlert">打开 Alert</wd-button>
ts
import { useDialog } from '@/uni_modules/wot-ui'

const dialog = useDialog()

const openAlert = () => {
  dialog.alert({
    title: '提示',
    msg: '操作成功'
  })
}

Confirm 与 Prompt

confirmprompt 返回 Promisethen 对应确认,catch 对应取消或关闭。

html
<wd-dialog />
<wd-button @click="openConfirm">打开 Confirm</wd-button>
<wd-button @click="openPrompt">打开 Prompt</wd-button>
ts
import { useDialog } from '@/uni_modules/wot-ui'

const dialog = useDialog()

const openConfirm = () => {
  dialog
    .confirm({
      title: '删除确认',
      msg: '确定删除该记录吗?'
    })
    .then(() => {
      console.log('点击了确认')
    })
    .catch(() => {
      console.log('点击了取消')
    })
}

const openPrompt = () => {
  dialog
    .prompt({
      title: '请输入邮箱',
      inputPattern: /.+@.+\..+/i,
      inputError: '邮箱格式不正确'
    })
    .then((res) => {
      console.log(res.value)
    })
}

多实例调用

通过 selector 区分页面内多个实例,useDialog(selector) 会绑定到指定实例。

html
<wd-dialog selector="dialog-a" />
<wd-dialog selector="dialog-b" />
<wd-button @click="openA">打开 A</wd-button>
<wd-button @click="openB">打开 B</wd-button>
ts
import { useDialog } from '@/uni_modules/wot-ui'

const dialogA = useDialog('dialog-a')
const dialogB = useDialog('dialog-b')

const openA = () => {
  dialogA.alert({ title: 'A 实例', msg: '这是 A 弹框' })
}

const openB = () => {
  dialogB.alert({ title: 'B 实例', msg: '这是 B 弹框' })
}

确认前拦截

beforeConfirm 接收当前输入值,支持返回 booleanPromise<boolean>

html
<wd-dialog />
<wd-button @click="openBeforeConfirm">确认前拦截</wd-button>
ts
import { useDialog, useToast } from '@/uni_modules/wot-ui'

const dialog = useDialog()
const toast = useToast()

const openBeforeConfirm = () => {
  dialog.confirm({
    title: '确认提交',
    msg: '将进行校验后提交',
    beforeConfirm: () => {
      toast.loading('校验中...')
      return new Promise((resolve) => {
        setTimeout(() => {
          toast.close()
          resolve(true)
        }, 1200)
      })
    }
  })
}

API

Methods

方法名称说明参数返回值
show打开弹框string | DialogOptionsPromise<DialogResult>
alert打开 Alert 弹框string | DialogOptionsPromise<DialogResult>
confirm打开 Confirm 弹框string | DialogOptionsPromise<DialogResult>
prompt打开 Prompt 弹框string | DialogOptionsPromise<DialogResult>
close关闭当前弹框-void

DialogResult

参数说明类型默认值
action操作类型,可选值为 confirmcancelmodalcloseActionType-
valuePrompt 模式下的输入值string | number-

useDialog

参数说明类型默认值
selector指定弹框实例标识,传空字符串时使用默认实例string''

DialogOptions

参数说明类型默认值
title标题string''
msg消息内容string''
type弹框类型,可选值为 alertconfirmpromptDialogTypealert
theme操作区风格,可选值为 buttontextDialogThemebutton
zIndex弹窗层级number99
lazyRender弹层内容懒渲染booleantrue
headerImage顶部通栏图片地址string-
icon图标名称。可选值为 successinfowarningdanger,也支持自定义图标名string-
iconColor图标颜色string-
iconProps图标组件透传属性Partial<IconProps>-
inputValuePrompt 初始值string | number-
inputPropsPrompt 模式下 input 组件属性Partial<InputProps>{ type: 'text', modelValue: '' }
textareaPropsPrompt 模式下 textarea 组件属性Partial<TextareaProps>-
inputPatternPrompt 输入正则校验规则RegExp-
inputValidatePrompt 输入函数校验规则,返回 boolean 或错误文本(inputValue: string | number) => boolean | string-
inputErrorPrompt 校验失败提示文案string''
actionLayout操作按钮排列方式,可选值为 horizontalverticalDialogActionLayouthorizontal
showCancelButton是否显示取消按钮booleanalert 为 false,confirm/prompt 为 true
confirmButtonText确认按钮文案string-
cancelButtonText取消按钮文案string-
confirmButtonProps v1.5.0确认按钮配置,支持字符串、对象或 nullDialogBoxButtonOption{}
cancelButtonProps v1.5.0取消按钮配置,支持字符串、对象或 nullDialogBoxButtonOptionshowCancelButton 推导
actions自定义操作按钮数组;配置后优先级高于确认/取消按钮DialogAction[]-
closeOnClickModal是否支持点击遮罩关闭booleanfalse
showClose是否显示右上角关闭按钮booleanfalse
beforeConfirm确认前拦截函数,返回 booleanPromise<boolean>DialogBeforeConfirm-

Released under the MIT License.

Released under the MIT License.