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

yizhihongxing

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

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

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

二、封装弹窗组件的步骤

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

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日

相关文章

  • netstopmysql服务名无效

    “netstopmysql服务名无效”错误通常是由于服务名拼写错误或服务未正确安装而引起的。以下是解决此错误的完整攻略: 检查服务名拼写 首先,您需要检查服务名是否正确拼写。您可以使用以下命令列出所有正在运行的服务: net start 在输出中查找MySQL服务的名称。如果服务名不正确拼写,则会出现“netstopmysql服务名无效”错误。您可以使用正确…

    other 2023年5月6日
    00
  • shell遍历文件每一行

    以下是“Shell遍历文件每一行”的完整攻略: Shell遍历文件每一行 在Shell中,我们可以使用while循环和read命令来遍历文件的每一行。以下是遍历文件每一行的步骤: 1. 读取文件 首先,我们需要读取文件。可以使用以下代码: while read line do echo $line done < file.txt 在上面的代码中,我们使…

    other 2023年5月7日
    00
  • 资讯网站解决方案

    资讯网站解决方案 对于一个资讯网站,我们需要考虑以下几方面的解决方案,以确保网站的稳定、安全和易用性。 选择合适的服务器 一台良好的服务器是保证网站正常运行的关键,我们需要选择以下几方面来确定服务器: 服务器类型:推荐选择云服务器,因为它们提供了高性能、高可靠性、易扩展性和灵活性。 操作系统:Linux服务器更加稳定和安全,而且配合LAMP(Linux、Ap…

    other 2023年6月26日
    00
  • js 动态加载事件的几种方法总结

    JS 动态加载事件的几种方法总结攻略 简介 在 Web 开发中,动态加载事件是必不可少的。通过动态加载事件,我们可以让网页更加丰富和交互性。本篇攻略总结了 JS 中动态加载事件的几种方式,并提供两个简单的示例说明。 事件绑定 在传统的 JS 编程中,我们通常使用事件绑定的方式来为 DOM 元素添加事件。事件绑定的方式包括直接在 HTML 中添加事件和通过 J…

    other 2023年6月25日
    00
  • 解决SQL SERVER 2008数据库表中修改字段后不能保存

    解决 SQL Server 2008 数据库表中修改字段后不能保存的问题 问题描述:在 SQL Server 2008 数据库表中修改表中的字段,但是修改后无法保存。 解决过程: Step 1:查看表的状态 在 SQL Server Management Studio 中选择该表,右键点击选择“设计”,然后查看它的属性。 查看表属性可以看到表的 “表格修改限…

    other 2023年6月25日
    00
  • 鼠标右键新建菜单找不到文本文档 无法新建记事本的解决方法

    鼠标右键新建菜单找不到文本文档 无法新建记事本的解决方法 问题背景 在电脑上右键单击桌面时,选择“新建”菜单,但是没有“文本文档”选项,同时也无法新建记事本。 解决方法 方法一:通过注册表添加文本文档新建菜单 打开“运行”对话框,输入“regedit”打开注册表编辑器; 找到以下路径:HKEY_CLASSES_ROOT\.txt 右侧会出现一个名为“Cont…

    other 2023年6月27日
    00
  • CSS锦囊

    CSS锦囊攻略 1. 选择器 CSS选择器用于选择HTML元素并应用样式。以下是一些常见的选择器示例: 元素选择器:选择HTML元素类型。例如,p选择所有<p>元素。 类选择器:选择具有相同类名的元素。例如,.red选择所有类名为\”red\”的元素。 ID选择器:选择具有相同ID的元素。例如,#header选择ID为\”header\”的元素。…

    other 2023年9月6日
    00
  • 浅谈Spring bean 生命周期验证

    浅谈Spring Bean 生命周期验证 Spring是Java企业级应用开发中经典的开源框架。在Spring框架中,Bean是最基本的一个概念。它是Spring执行过程中的一个承载体,存储着数据和方法。在Spring中,Bean有着自己的生命周期,Spring能够通过各个生命周期的回调方法,在Bean的不同阶段做一些事情或者修改一些属性。 在本文中,我们将…

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