小程序开发实战指南之封装自定义弹窗组件

下面是关于“小程序开发实战指南之封装自定义弹窗组件”的完整攻略及两条示例说明:

一、封装自定义弹窗组件的目的

在微信小程序开发中,经常需要使用弹窗组件来提醒用户一些信息或让用户进行选择等操作。为了提高代码复用性,并且让开发更加方便快捷,我们需要将弹窗组件进行封装,使其可以更加方便地被其他页面调用使用。

二、封装弹窗组件的步骤

以下是封装自定义弹窗组件的步骤:

1. 创建组件目录

首先,在小程序项目中新建一个目录,用于存放自定义组件。在该目录下创建一个空文件夹用于存放弹窗组件的相关文件。

2. 创建组件wxml、wxss和js文件

在上述文件夹内创建组件的wxml、wxss和js文件,并输入以下代码:

wxml文件

<view class="mask" catchtouchmove="{{true}}" wx:if="{{show}}">
  <view class="mask-content">
    <view class="mask-title">{{title}}</view>
    <view class="mask-body">{{content}}</view>
    <button class="mask-close-btn" bindtap="closeMask">关闭</button>
  </view>
</view>

wxss文件

.mask{
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0,0,0,0.7);
  display:none;
  z-index: 999;
}
.mask-content{
  position: absolute;
  top: 50%;
  left: 50%;
  max-width: 90%;
  transform: translate(-50%, -50%);
  background-color: #fff;
  padding:20rpx;
  border-radius: 10rpx;
}
.mask-title{
  font-size: 36rpx;
  font-weight: bold;
  color: #333;
  margin-bottom:30rpx;
  text-align:center;
}
.mask-body{
  font-size: 28rpx;
  color: #333;
  line-height: 40rpx;
  text-align:center;
  margin-bottom:30rpx;
}
.mask-close-btn{
  display:block;
  width:100%;
  height:80rpx;
  font-size: 36rpx;
  color: #fff;
  background-color: #333;
  border-radius:8rpx;
  line-height:80rpx;
  text-align: center;
  margin-bottom:20rpx;
}

js文件

Component({
  /**
   * 组件的属性列表
   */
  properties: {
    title:{
      type:String,
      value:'提示'
    },
    content:{
      type:String,
      value:''
    },
    show:{
      type:Boolean,
      value:false
    }
  },

  /**
   * 组件的初始数据
   */
  data: {},

  /**
   * 组件的方法列表
   */
  methods: {
    closeMask(){
      this.setData({
        show:false
      })
    }
  }
})

3. 在页面中使用自定义组件

在需要使用弹窗组件的页面json文件中,引入上述组件文件:

{
  "usingComponents": {
    "mask-dialog": "/components/mask-dialog/mask-dialog"
  }
}

在该页面wxml文件中,使用自定义组件:

<mask-dialog title="提示" content="这是一个自定义弹窗组件" show="{{showDialog}}"></mask-dialog>

4. 在页面js文件中控制弹窗组件的显示和隐藏

在该页面js文件中,定义showDialog变量,并控制弹窗组件的显示和隐藏:

Page({
  data: {
    showDialog: false
  },
  showMask(){
    this.setData({
      showDialog: true
    })
  }
})

三、示例说明

示例1:封装一个confirm组件

在上述自定义弹窗组件的基础上,我们可以进一步封装一个confirm组件用于确认操作。以下是confirm组件的相关代码:

wxml文件

<view class="mask" catchtouchmove="{{true}}" wx:if="{{show}}">
  <view class="mask-content">
    <view class="mask-title">{{title}}</view>
    <view class="mask-body">{{content}}</view>
    <view class="mask-btn-group">
      <button class="mask-btn mask-confirm-btn" bindtap="onConfirm">确认</button>
      <button class="mask-btn mask-cancel-btn" bindtap="onCancel">取消</button>
    </view>
  </view>
</view>

wxss文件

.mask{
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0,0,0,0.7);
  display:none;
  z-index: 999;
}
.mask-content{
  position: absolute;
  top: 50%;
  left: 50%;
  max-width: 90%;
  transform: translate(-50%, -50%);
  background-color: #fff;
  padding:20rpx;
  border-radius: 10rpx;
}
.mask-title{
  font-size: 36rpx;
  font-weight: bold;
  color: #333;
  margin-bottom:30rpx;
  text-align:center;
}
.mask-body{
  font-size: 28rpx;
  color: #333;
  line-height: 40rpx;
  text-align:center;
  margin-bottom:30rpx;
}
.mask-btn-group{
  display:flex;
  justify-content: center;
}
.mask-btn{
  font-size: 32rpx;
  color: #fff;
  border:none;
  border-radius:8rpx;
  line-height:80rpx;
  text-align: center;
  width:200rpx;
  height:80rpx;
  margin-left:20rpx;
  margin-right:20rpx;
}
.mask-confirm-btn{
  background-color:#108ee9;
}
.mask-cancel-btn{
  background-color:#d81e06;
}

js文件

Component({
  /**
   * 组件的属性列表
   */
  properties: {
    title:{
      type:String,
      value:'提示'
    },
    content:{
      type:String,
      value:''
    },
    show:{
      type:Boolean,
      value:false
    }
  },

  /**
   * 组件的初始数据
   */
  data: {},

  /**
   * 组件的方法列表
   */
  methods: {
    onConfirm(){
      this.triggerEvent('confirm')
      this.setData({
        show:false
      })
    },
    onCancel(){
      this.triggerEvent('cancel')
      this.setData({
        show:false
      })
    }
  }
})

在需要使用confirm组件的页面wxml文件中,使用自定义组件并绑定confirm和cancel事件:

<mask-dialog title="提示" content="是否确认操作?" show="{{showDialog}}" bind:confirm="onDialogConfirm" bind:cancel="onDialogCancel"></mask-dialog>

在该页面js文件中,定义showDialog变量,并控制confirm组件的显示和隐藏,并处理confirm和cancel事件:

Page({
  data: {
    showDialog: false
  },
  showConfirm(){
    this.setData({
      showDialog: true
    })
  },
  onDialogConfirm(){
    //确认操作
  },
  onDialogCancel(){
    //取消操作
  }
})

示例2:封装一个toast组件

在上述自定义弹窗组件的基础上,我们还可以通过封装toast组件来实现错误提示或操作成功提示等功能。以下是toast组件的相关代码:

wxml文件

<view class="toast" wx:if="{{content && show}}">
  <view class="toast-content">{{content}}</view>
</view>

wxss文件

.toast{
  position: fixed;
  z-index: 999;
  top: 50%;
  left: 50%;
  transform: translate(-50%,-50%);
  background-color: rgba(0,0,0,0.7);
  padding: 20rpx;
  border-radius: 10rpx;
  color: #fff;
  display:none;
}

js文件

Component({
  /**
   * 组件的属性列表
   */
  properties: {
    content:{
      type:String,
      value:''
    },
    show:{
      type:Boolean,
      value:false
    }
  },

  /**
   * 组件的初始数据
   */
  data: {},

  /**
   * 组件的方法列表
   */
  methods: {
    closeToast(){
      this.setData({
        show:false
      })
    }
  }
})

在需要使用toast组件的页面wxml文件中,使用自定义组件并绑定showToast变量:

<toast content="操作成功" show="{{showToast}}"></toast>

在该页面js文件中,定义showToast变量,并控制toast组件的显示和隐藏:

Page({
  data: {
    showToast: false
  },
  showToast(){
    this.setData({
      showToast: true
    })
    setTimeout(()=>{
      this.setData({
        showToast: false
      })
    },2000)
  }
})

当showToast变量值为true时,toast组件就会显示出来。通过setTimeout函数并设定时间为2000毫秒,可以控制toast组件的自动隐藏。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:小程序开发实战指南之封装自定义弹窗组件 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • Android Studio EditText点击图标清除文本内容的实例解析

    以下是Android Studio EditText点击图标清除文本内容的实例解析的完整攻略: 在布局文件中添加EditText和清除图标: <EditText android:id=\"@+id/editText\" android:layout_width=\"match_parent\" android:l…

    other 2023年10月17日
    00
  • Java类和成员变量声明类详解

    《Java类和成员变量声明类详解》 简介 本篇攻略主要详解Java中的类和成员变量声明,包括如何定义类、类的成员变量、访问修饰符以及类的实例化等。 声明类 在Java中,定义类需要使用class关键字,通常的类定义格式如下: 访问修饰符 class 类名 { // 成员变量 // 构造方法 // 成员方法 } 其中访问修饰符用于控制类的访问范围。Java中的…

    other 2023年6月27日
    00
  • MySQL修改配置 区分大小写

    MySQL修改配置 区分大小写攻略 在MySQL中,区分大小写是一个重要的配置选项。默认情况下,MySQL在Linux和macOS上是区分大小写的,而在Windows上是不区分大小写的。如果你需要修改MySQL的配置以启用或禁用区分大小写,可以按照以下步骤进行操作: 打开MySQL配置文件:首先,你需要找到MySQL的配置文件。在大多数情况下,MySQL的配…

    other 2023年8月16日
    00
  • Python基础之变量基本用法与进阶详解

    Python基础之变量基本用法与进阶详解 变量基本用法 在Python中,变量是用来存储数据的容器。使用变量可以方便地引用和操作数据。下面是变量的基本用法: 变量的定义和赋值 在Python中,可以使用等号(=)来定义和赋值变量。变量名可以是任意合法的标识符,但不能以数字开头。 # 定义一个整数变量 num = 10 # 定义一个字符串变量 name = \…

    other 2023年8月9日
    00
  • 在python中获取桌面路径

    在Python中获取桌面路径 在Python中,有时需要获取桌面路径以便进行文件操作。本文将详细讲解如何在Python中获取桌面路径,包括两种方法和示例说明。 方法一:使用os模块 可以使用Python的os模块来获取桌面路径。具体步骤如下: import os desktop_path = os.path.join(os.path.expanduser(&…

    other 2023年5月8日
    00
  • Java 八种基本类型和基本类型封装类

    Java 八种基本类型和基本类型封装类是Java中非常重要的概念,下面逐一介绍。 Java八种基本类型 Java八种基本类型分别为:byte,short,int,long,float,double,char和boolean。 其中,byte、short、int、long、float、double为数值类型,用于表示数值;char表示字符类型,用于表示单个字符…

    other 2023年6月25日
    00
  • win10提示windows似乎未正确加载怎么解决?

    当 Windows 10 出现了“windows似乎未正确加载”的提示时,通常是由于系统文件遭受损坏或者系统缺失关键文件所导致的。为了解决这个问题,你可以尝试以下几个步骤: 步骤一:执行SFC扫描器命令 SFC(System File Checker)是一个内置于 Windows 操作系统中的工具,它可以扫描并修复损坏的系统文件。执行以下步骤: 点击“开始”…

    other 2023年6月25日
    00
  • C语言中字符串与各数值类型之间的转换方法

    C语言中字符串和数值类型之间的转换是比较常见的操作。可以利用C语言的库函数实现这一功能。下面是实现字符串和各数值类型之间转换的方法。 将字符串转换为整型数值: 使用atoi函数。 int atoi(const char *str); 将一个字符串转换为一个整数,当传入的字符串不是合法的整数时返回0。 示例:将字符串”123″转换为整数值123。 #inclu…

    other 2023年6月20日
    00
合作推广
合作推广
分享本页
返回顶部