首页 > 其他分享 >useModal对弹窗进行逻辑封装

useModal对弹窗进行逻辑封装

时间:2024-02-29 18:23:47浏览次数:15  
标签:loading 封装 visible import hideModal useModal 弹窗 const

useModal.js

import { nextTick, ref } from 'vue'
import { isFunction } from '@/utils/judge'

export function useModal() {
	// 标题
	// 执行ok、cancel方法
	const visible = ref(false)
	const loading = ref(false)

	const hideModal = () => {
		visible.value = false
	}

	const showModal = () => {
		visible.value = true
	}

	const toggleLoading = () => {
		loading.value = !loading.value
	}
	const handleOk = async (callbackFn) => {
		if (!callbackFn || !isFunction(callbackFn)) return
		toggleLoading()
		console.log('output-> 1', 1)
		callbackFn(() => {
			console.log('output-> 2', 2)
			toggleLoading();
			hideModal();
		})
	}

	return {
		visible,
		showModal,
		hideModal,
		handleOk,
		loading,
		toggleLoading
	}
}

使用案例

<template>
	<div>
		<a-button type="link" @click="showModal">详情</a-button>
		<a-modal v-model:visible="visible"
						 title="登录表单"
		>
			<a-form
				ref="formRef"
			>
				<a-form-item name="name">
					<a-input
						v-model:value="state.userName"
						autocomplete="off"
						placeholder="请输入账号"
					>
						<template v-slot:prefix>
							<UserOutlined style="color: rgba(0, 0, 0, 0.25)" />
						</template>
					</a-input>
				</a-form-item>
			</a-form>
			<template #footer>
				<a-button key="back" @click="hideModal">取消</a-button>
				<a-button key="submit"
									type="primary" :loading="loading"
									@click="handleOk(submitFn)">提交</a-button>
			</template>
		</a-modal>
	</div>
</template>
<script setup>
import { useModal } from '@/hooks/useModal'
import { message } from 'ant-design-vue'
import { UserOutlined } from '@ant-design/icons-vue'
import { reactive } from 'vue'

let {visible, loading, handleOk, hideModal, showModal} = useModal();

const state = reactive({
	userName: ''
})
const submitFn = async (callback) => {
	setTimeout(() => {
		// 提交逻辑代码
		console.log('output-> state.userName::: ', state.userName)
		message.warn('提交成功')
		callback()
	}, 2000)
	return true;
}


</script>


标签:loading,封装,visible,import,hideModal,useModal,弹窗,const
From: https://www.cnblogs.com/openmind-ink/p/18045061

相关文章

  • vue3 echart组件封装
    项目中用到了很多echart图表,进行了简单的组件封装,主要包含以下功能:创建图表实例,渲染图表支持传入自定义函数,可拿到图表实例,实现个性化功能支持配置更新后图表自动刷新,可配置是清空后再刷新loading状态控制resize时图表更新支持饼图默认高亮功能实现资源引入echart资源......
  • KBU1010-ASEMI整流桥KBU1010参数、封装、尺寸
    编辑:llKBU1010-ASEMI整流桥KBU1010参数、封装、尺寸型号:KBU1010品牌:ASEMI封装:KBU-4正向电流(Id):10A反向耐压(VRRM):1000V正向浪涌电流:300A正向电压(VF):1.05V引脚数量:4芯片个数:4芯片尺寸:MIL功率(Pd):中小功率设备工作温度:-55°C~150°C类型:插件整流桥、整流桥KBU1010整流桥......
  • 关于AutoCAD反复弹窗Nonvalid Software Detected的解决办法
    事件起因:客户安装的CAD2020频繁弹窗NonvalidSoftwareDetected,报错内容:YOURACCESSISNOWBLOCKED 解决办法:在文件资源管理器中搜索路径C:\ProgramFiles\Autodesk\AutoCAD2020\Support\NewTabPage\config\ACAD\zh-CN(注意自己安装的版本和位置,我这里是2020版本安......
  • GBJ2510-ASEMI整流桥GBJ2510参数、封装、尺寸
    编辑:llGBJ2510-ASEMI整流桥GBJ2510参数、封装、尺寸型号:GBJ2510品牌:ASEMI封装:GBJ-4最大重复峰值反向电压:1000V最大正向平均整流电流(Vdss):25A功率(Pd):大功率芯片个数:4引脚数量:4类型:插件整流桥、整流桥正向浪涌电流:350A正向电压:1.05V最大输出电压(RMS):封装尺寸:如图工......
  • 类学习笔记——【类的 封装、继承和多态】
    @目录封装、继承和多态类的封装类的继承源码:Giteehttps://gitee.com/drip123456/java-seGIthubhttps://github.com/Drip123456/JavaSE专栏:JavaSE笔记专栏封装、继承和多态封装、继承和多态是面向对象编程的三大特性。封装,把对象的属性和方法结合成一个独立的整体,隐藏......
  • mvvmtoolkit+snackbar弹窗消息通知
    需求场景:在MainView.xaml下添加一个SnackBar并将其ZIndex设置成1,后续所有的消息弹窗都通过MainView来展示代码设置:MVVMToolkit+MaterDesigner组+全局静态类MainView下添加SnackBar,SnackBar下的消息数据以及是否展示属性绑定至一个全局消息类中,后续所有的消息展示则可以通过......
  • uniapp 封装接口并使用
    1.在utils文件夹下新建api.js和httpRequest.js页面httpRequest.js:getApp().globalData.baseUrl='https://xxxxxx';importapifrom"@/utils/api.js";module.exports={httpRequest(url,method,param){vardata=param.data;......
  • 以解析csv数据为例,讨论string、char[]、stream 不同类型来源是否能进行高性能读取解析
    篇幅较长,所以首先列举结果,也就是我们的目的核心目的为探索特定场景对不同类型数据进行统一抽象,并达到足够高性能,也就是一份代码实现,对不同类型数据依然高性能以下为结果,也就是我们的目的:对1w行csv数据的string进行RFC4180csv标准进行解析,string类型csv应该比StringRea......
  • 深入理解 Java 修饰符与封装:访问权限、行为控制与数据隐藏
    Java修饰符Java修饰符用于控制类、属性、方法和构造函数的访问权限和行为。它们可以分为两组:访问修饰符:public:意味着代码对所有类可访问。private:意味着代码只能在声明的类内部访问。default:意味着代码只能在同一包中访问。protected:意味着代码在同一包和子......
  • 集成电路封装形式
    封装是什么·指集成电路芯片或者其它电子元件安装到一个外部保护壳中,以提供机械支撑、环境保护、电气连接的过程·封装的主要目的是保护芯片免受外部环境损害,同时提供一个外部电路连接的接口GBA·球栅技术简称(GBA),是一种封装技术;应用在集成电路上的表面粘着技术;常用于永久......