Ant Design Vue封装a-drawer

简介: Ant Design Vue封装a-drawer

1.创建子组件


<template>
    <a-drawer
        :title="drawerInfo.customTitle"
        :placement="placement"
        :closable="drawerInfo.showCloseIcon"
        :visible="drawerInfo.visible"
        @close="onClose"
        :width="drawerInfo.width"
        :maskClosable="drawerInfo.clickmaskFlag"
    >
        <div clang="cont-all">
            <slot></slot>
        </div>
    </a-drawer>
</template>
<script lang="ts">
import { defineComponent, reactive, watch } from 'vue'
export default defineComponent({
    props: {
        // 从那个方向打开
        openlocal: {
            type: String,
            default: 'right',
        },
        // 宽度
        width: {
            type: String,
            default: '461px',
        },
        // 标题
        customTitle: {
            type: String,
            required: true,
        },
        // 是否展示抽屉
        showMskFalg: {
            type: Boolean,
            default: false,
        },
        // 显示关闭图标
        showCloseflag: {
            type: Boolean,
            default: true,
        },
        //  点击蒙层是否允许关闭
        clickmaskFlag: {
            type: Boolean,
            default: true,
        },
    },
    setup(props, { emit }) {
        const drawerInfo = reactive({
            placement: props.openlocal, //打开的方向
            width: props.width, //宽度
            customTitle: props.customTitle, //标题
            visible: props.showMskFalg, //默认关闭
            showCloseIcon: props.showCloseflag, //closable
            clickmaskFlag: props.clickmaskFlag, //  点击蒙层是否允许关闭
        })
        // 点击遮罩层或右上角叉或取消按钮的回调
        function onClose() {
            emit('otherHander')
        }
        // 监听打开或者关闭
        watch(props, ({ showMskFalg }) => {
            drawerInfo.visible = showMskFalg
        })
        return {
            drawerInfo,
            onClose,
        }
    },
})
</script>


2封装时的注意点


showMskFalg这个参数是控制抽屉是否展开的一个变量


默认这个值是关闭的


由于这个值是有父级传递过来的


我们需要对这个值进行监听


于是便有了


监听打开或者关闭


watch(props, ({ showMskFalg }) => {
   drawerInfo.visible = showMskFalg
})


他表示的是监听props中的showMskFalg这个值


3.使用组件


<a-button type="primary" @click="showDrawer">Open</a-button>
<drawer-com
      openlocal="right"
      @otherHander="otherHander"
      :showCloseflag="comInfo.showCloseflag"
      customTitle="新建目录"
      :showMskFalg="comInfo.showMskFalg"
></drawer-com>
let comInfo = reactive({
    showMskFalg: false, //默认关闭
    showCloseflag: true, //没有关闭图标
})
// 打开抽屉
function showDrawer() {
    comInfo.showMskFalg = true
}
// 关闭抽屉
function otherHander() {
    comInfo.showMskFalg = false
}


1425695-20210720123338789-253128240.png

相关文章
|
22天前
|
JavaScript
vue使用iconfont图标
vue使用iconfont图标
119 1
|
1天前
|
JavaScript 安全 API
iframe嵌入页面实现免登录思路(以vue为例)
通过上述步骤,可以在Vue.js项目中通过 `iframe`实现不同应用间的免登录功能。利用Token传递和消息传递机制,可以确保安全、高效地在主应用和子应用间共享登录状态。这种方法在实际项目中具有广泛的应用前景,能够显著提升用户体验。
22 8
|
2天前
|
存储 设计模式 JavaScript
Vue 组件化开发:构建高质量应用的核心
本文深入探讨了 Vue.js 组件化开发的核心概念与最佳实践。
17 1
|
1月前
|
JavaScript 关系型数据库 MySQL
基于VUE的校园二手交易平台系统设计与实现毕业设计论文模板
基于Vue的校园二手交易平台是一款专为校园用户设计的在线交易系统,提供简洁高效、安全可靠的二手商品买卖环境。平台利用Vue框架的响应式数据绑定和组件化特性,实现用户友好的界面,方便商品浏览、发布与管理。该系统采用Node.js、MySQL及B/S架构,确保稳定性和多功能模块设计,涵盖管理员和用户功能模块,促进物品循环使用,降低开销,提升环保意识,助力绿色校园文化建设。
|
2月前
|
JavaScript API 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
2月前
|
JavaScript 前端开发 开发者
Vue是如何劫持响应式对象的
Vue是如何劫持响应式对象的
65 18
|
2月前
|
JavaScript 前端开发 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
2月前
|
存储 JavaScript 前端开发
介绍一下Vue的核心功能
介绍一下Vue的核心功能
|
2月前
|
JavaScript 前端开发 API
介绍一下Vue中的响应式原理
介绍一下Vue中的响应式原理
45 1
|
2月前
|
JavaScript 前端开发 开发者
vue 数据驱动视图
总之,Vue 数据驱动视图是一种先进的理念和技术,它为前端开发带来了巨大的便利和优势。通过理解和应用这一特性,开发者能够构建出更加动态、高效、用户体验良好的前端应用。在不断发展的前端领域中,数据驱动视图将继续发挥重要作用,推动着应用界面的不断创新和进化。