0


【小程序开发】—— 封装自定义弹窗组件

文章目录

🍋前言:

大家好我是不苒,本人男,头像是女朋友照片,很多大佬都以为我是女的,浅浅的解释一下哈哈。很高兴书写博客与大家分享知识。
本片文章主要讲的是,

使用uniapp开发背景下,使用Vue的具名插槽封装一个自定义的弹窗组件popup

,感兴趣的小伙伴可以学习一下,如果发现本人编写有问题的话,欢迎大家随时来评论区探讨支出问题,我也会及时更正的。
软件分享:给大家推荐一个超级好用的刷面试题神器:牛客网,里面涵盖了各个领域的面试题库,还有大厂真题哦!

话不多说直接上正文一起来学习一下封装自定义弹窗组件吧!

🍍正文

1、探讨需求封装popup自定义弹窗组件

首先我们需要探讨一下,封装自定义的组件都需要什么功能

  1. 需要一个半透明灰色的背景,用于区分与非弹窗内容,点击灰色区域也可以关闭弹窗。
  2. 需要一个关闭按钮和两个操作按钮,一个确定,一个取消。
  3. 弹窗内容:标题,内容区域,因为是自定义所以都使用了具名插槽,也可以设置默认的显示内容。
  4. 弹窗的显示位置,本次封装只考虑了居中与页面底部两个常用显示位置。

2、实战开发弹窗组件

2.1 子组件内容 popup.vue文件

<template><viewclass="mark"v-if="isShow"@click="close"><view:class="bottom?'bottom':'center'"class="content"><view@click="close"><imageclass="close"src="../static/close.png"></image></view><slotname="title"><viewclass="title">子组件默认标题</view></slot><slotname="body"><textstyle="font-size: 14px;">确定要取消订单吗?取消之后购物车也将清空。</text></slot><slotname="bottom"><viewclass="btns"><viewclass="confirm btn"@click="confirm">确定</view><viewclass="cancel btn"@click="cancel">取消</view></view></slot></view></view></template><script>exportdefault{
        props:{
            isShow:{
                type: Boolean,default:false},// 子组件接收一个布尔类型的bottom,如果为true则弹窗则在页面的底部,false为默认居中显示
            bottom:{
                type: Boolean,default:false}},data(){return{}},
        methods:{close(){this.$emit('close')},cancel(){this.$emit('cancel')},confirm(){this.$emit('confirm')},}}</script><stylelang="scss">.mark{position: fixed;width: 100vw;height: 100vh;background-color:rgba(0, 0, 0, 0.3);left: 0;bottom: 0;top: 0;right: 0;display: flex;justify-content: center;align-items: center;}.bottom{position: absolute;bottom: 0 ;width: 100vw;}.center{width: 80vw;position: relative;}.content{background-color: #fff;border-radius: 20rpx;height: 400rpx;padding: 40rpx;box-sizing: border-box;
        
        .close{position:absolute;right:30rpx;top: 20rpx;width: 40rpx;height: 40rpx;}.title{text-align: center;font-weight: 600;height: 50rpx;line-height: 50rpx;margin-bottom: 20rpx;}.btns{bottom: 20px;position: absolute;display: flex;justify-content: space-between;width: 88%;
            .btn{width: 160rpx;height: 80rpx;text-align: center;line-height: 80rpx;border-radius: 20rpx;}.confirm{background: bisque;}.cancel{background: #ccc;}}}</style>

注意:

  • 本文CSS内容使用了scss语法,不使用的话可以将嵌套的样式拿出即可。

解释说明:

  • isShow 用于控制弹出层的显示与隐藏,在点击灰色空白区域和右上角关闭按钮,还有确定按钮与取消按钮之后都会关闭弹出层。
  • bottom 用于控制弹出层的显示位置,默认为居中显示
  • methods中向父组件传递了三个方法,分别是关闭弹窗,点击确定按钮,点击取消按钮
  • 使用具名插槽,在父组件中可以自定义插槽中的内容,方便不同位置的弹窗显示样式

2.2 父组件引用子组件

<template><viewclass="container"><viewclass="btn"@click="open">
            显示弹出层
        </view><popup:isShow='visible':bottom='true'@close="closeMadle"@cancel="cancel"@confirm="confirm"><templatev-slot:title><viewclass="title">
                    父组件自定义标题
                </view></template><templatev-slot:body><viewclass="body">
                    这里是父组件引用子组件,使用具名插槽编写的自定义内容和样式。
                </view></template></popup></view></template><script>import popup from'../../components/popup.vue'exportdefault{
        components:{
            popup
        },data(){return{
                visible:false,}},
        methods:{open(){this.visible =true
                uni.hideTabBar()},closeMadle(){this.visible =false
                uni.showTabBar()},confirm(){// 这里调用接口执行点击确定后的操作并关闭弹窗
                console.log('点击了确认按钮')this.visible =false},cancel(){// 点击了取消按钮直接关闭弹窗
                console.log('点击了取消按钮')this.visible =false},}}</script>

<style lang="scss>.title{text-align: center;font-weight: 600;height: 50rpx;line-height: 50rpx;margin-bottom: 20rpx;}.body{font-size: 14px;font-weight: 600;color: darkorchid;}</style>

注意:

  • 本文CSS内容使用了scss语法,不使用的话可以将嵌套的样式拿出即可。

解释说明:

  • 引用子组件,并在conponents中注册。
  • bottomtrue用于控制弹出层的弹窗在底部显示,不传默认为居中显示。
  • @语法接收子组件中向父组件传递的三个方法,在父组件methods中定义三个方法做相应的操作。
  • 使用具名插槽,自定义插槽中的内容。
  • uni.showTabBar()uni.hideTabBar()两个方法用于控制原生tabbar的显示与隐藏。

3、效果图预览

3.1 不使用具名插槽的原有样式效果

在这里插入图片描述

3.2 使用具名插槽之后样式效果

在这里插入图片描述

这里是演示的那个显示在页面底部的弹窗,如果不需要直接将代码片段里的

:bottom="true"

删掉即可

🎃专栏分享:

小程序项目实战专栏:《uniapp小程序开发》
前端面试专栏地址:《面试必看》


      名
     
     
      言
     
     
      警
     
     
      句
     
     
      :
     
     
      说
     
     
      能
     
     
      做
     
     
      的
     
     
      ,
     
     
      做
     
     
      说
     
     
      过
     
     
      的
     
    
   
   
    \textcolor{red} {名言警句:说能做的,做说过的}
   
  
 名言警句:说能做的,做说过的

      原
     
     
      创
     
     
      不
     
     
      易
     
     
      ,
     
     
      还
     
     
      希
     
     
      望
     
     
      各
     
     
      位
     
     
      大
     
     
      佬
     
     
      支
     
     
      持
     
     
      一
     
     
      下
     
    
   
   
    \textcolor{blue}{原创不易,还希望各位大佬支持一下}
   
  
 原创不易,还希望各位大佬支持一下

👍

      点
     
     
      赞
     
     
      ,
     
     
      你
     
     
      的
     
     
      认
     
     
      可
     
     
      是
     
     
      我
     
     
      创
     
     
      作
     
     
      的
     
     
      动
     
     
      力
     
     
      !
     
    
   
   
    \textcolor{green}{点赞,你的认可是我创作的动力!}
   
  
 点赞,你的认可是我创作的动力!

⭐️

      收
     
     
      藏
     
     
      ,
     
     
      你
     
     
      的
     
     
      青
     
     
      睐
     
     
      是
     
     
      我
     
     
      努
     
     
      力
     
     
      的
     
     
      方
     
     
      向
     
     
      !
     
    
   
   
    \textcolor{green}{收藏,你的青睐是我努力的方向!}
   
  
 收藏,你的青睐是我努力的方向!

✏️

      评
     
     
      论
     
     
      ,
     
     
      你
     
     
      的
     
     
      意
     
     
      见
     
     
      是
     
     
      我
     
     
      进
     
     
      步
     
     
      的
     
     
      财
     
     
      富
     
     
      !
     
    
   
   
    \textcolor{green}{评论,你的意见是我进步的财富!}
   
  
 评论,你的意见是我进步的财富!

本文转载自: https://blog.csdn.net/qq_49002903/article/details/127606970
版权归原作者 不苒 所有, 如有侵权,请联系我们删除。

“【小程序开发】—— 封装自定义弹窗组件”的评论:

还没有评论