小程序如何封装自定义组件(Toast)

1、创建和pages 同级的component目录新建一个myToast目录 例如:

2、myToast.wxml文件内容:

<!-- 自定义toast组件 -->
<!-- name 模块名称   -->
 <template name="toast" >
 <!-- catchtouchmove=‘xxx’ 遮罩层的滚动穿透 -->
 <!-- isHide 显示消失 -->
  <view class="toast_content_box" wx:if="{{ isHide }}"
catchtouchmove="preventdefault">
    <view class="toast_content">
      <view class='toast_content_text'>
          <!-- 内容 -->
          {{content}}
      </view>
    </view>
  </view>
 </template> 

3、myToast.wxss文件样式(根据自己ui样式去写):

.toast_content_box {
  overflow: hidden;
  display: flex;
  width: 100%;
  height: 100%;
  justify-content: center;
  align-items: center;
  position: fixed;
  z-index: 999;
  background-color: rgba(0, 0, 0, 0.3)
}
.toast_content {
   width: 50%;
  padding: 30rpx;
  background-color: rgba(0, 0, 0, 0.8);
  border-radius: 20rpx;
}
.toast_content_text {
  width: 100%;
  height: 100%;
  background-size: 100% 100%;
  background-repeat: no-repeat;
  text-align: center;
  color: #fff;
  font-size: 28rpx;
  font-weight: 300;
}

4、myToast.js文件内容:

let _compData = {
  '_toast_.isHide': false,// 控制组件显示隐藏
  '_toast_.content': '',// 显示的内容
}
let toastPannel = {
  // toast显示的方法
  ShowToast: function (data) {
    let self = this;
    this.setData({ '_toast_.isHide': true, '_toast_.content': data });
  },
  // toast隐藏的方法
  HideToast: function (data) {
    let self = this;
    self.setData({ '_toast_.isHide': false })
  },
  // toast显示的方法 2000后隐藏
  ShowToastTime: function (data) {
    let self = this;
    this.setData({ '_toast_.isHide': true, '_toast_.content': data });
    setTimeout(() => {
      this.setData({ '_toast_.isHide': false, '_toast_.content': data });
    }, 2000)
  },
}

function ToastPannel() {
  // 拿到当前页面对象
  let pages = getCurrentPages();
  let curPage = pages[pages.length - 1];
  this.__page = curPage;
  // 小程序最新版把原型链干掉了。。。换种写法
  Object.assign(curPage, toastPannel);
  // 附加到page上,方便访问
  curPage.toastPannel = this;
  // 把组件的数据合并到页面的data对象中
  curPage.setData(_compData);
  return this;
}
module.exports = {
  ToastPannel
}

5、全局引入, 在项目中的app.js中将组件脚本引入供全局使用,引入方法:接收暴露出来的构造函数

6、 全局引入样式在app.wxss

7、在需要使用该组件的页面将模块引入:

8、在引入模块组件 同级的js中实例组件的构造函数:

!

9、点击按钮实现效果

组件比较简单、如果需求不同另行修改。

原文地址:https://www.cnblogs.com/MicKing/p/10773442.html

时间: 2024-07-31 09:59:53

小程序如何封装自定义组件(Toast)的相关文章

手摸手教你微信小程序开发之自定义组件

前言 相信大家在开发小程序时会遇到某个功能多次使用的情况,比如弹出框.这个时候大家首先想到的是组件化开发,就是把弹出框封装成一个组件,然后哪里使用哪里就调用,对,看来大家都是有思路的人,但是要怎样实现呢.可能你会去看官方文档,但是微信的官方文档也是说的不太清楚,所以写起来也是非常痛苦.今天就带大家手摸手开发微信组件,坐稳了,马路杀手要开车了. 具体实现 我们先实现个简单的弹窗组件,详情图如下: 1.新建component文件夹存放我们的组件,里边存放的就是我们所用的组件,我们今天要做的事弹出框,

微信小程序中的自定义组件 以及 相关的坑

Step1 我们初始化一个小程序(本示例基础版本库为 1.7 ),删掉里面的示例代码,并新建一个 components 文件夹,用于存放我们以后开发中的所用组件,今天我们的目的是实现一个 首页 组件,因此,我们在 components 组件中新建一个 home 文件夹来存放我们的弹窗组件,在 home 下右击新建 Component 并命名为 home 后,会生成对应的 json wxml wxss js 4个文件,也就是一个自定义组件的组成部分,此时你的项目结构应该如下图所示: Step2 组

微信小程序如何使用自定义组件

本博文是通过实际开发中的一个实例来讲解自定义组件的使用. 第一步:新建自定义组件目录,如图,我新建了个componts和tabList目录,然后右键tabList目录选择新建compont取名为tabList,就生成了如下目录结构,组件结构和page一样,包含js json wxml wxss 四个文件 第二步:写好js 写好wxml  写法和page一样 第三步:在要使用的目标页面,配置下 第四步:以标签的形式在页面中使用: 传递数据和vue一样,通过自定义属性,如图红框中的tabData,组

小程序里的自定义组件:组件的外部样式externalClasses的使用

启用外部样式: 自定义组件: v-tag 在html 引入 在组件写外部样式的css : .ex-tag { background-color: #fffbdd ; } 在组件使用该外部的样式 这个时候我们发现没有效果 我们应该使用!important 强制覆盖样式 .ex-tag { background-color: #fffbdd !important; } 效果: 原文地址:https://www.cnblogs.com/guangzhou11/p/11470590.html

微信小程序 - radio/checkbox自定义组件

自定义radio/checkbox组件,可根据自己要求自行修改 点击下载:示例 原文地址:https://www.cnblogs.com/cisum/p/10324607.html

微信小程序开发-地图map组件上使用input组件

微信小程序开发-地图map组件上使用input组件 标签: 微信小程序 uni-app 原生组件层级关系 微信小程序在最高层级 在微信小程序中原生组件包括camera canvas input(仅在focus时表现为原生组件) live-player live-pusher map textarea video 在微信小程序开发中原生组件的层级是最高的,所以页面中的其他组件无论设置 z-index 为多少,都无法盖在原生组件上. 后插入的原生组件可以覆盖之前的原生组件. 原生组件还无法在 pic

微信小程序(3)——常用的组件

view: view是小程序中的视图容器之一,似于html中的<div>标签 <view class="section"> <view class="section__title">flex-direction: row</view> <view class="flex-wrp" style="flex-direction:row;"> <view class=

微信小程序开发—快速掌握组件及API的方法---转载

微信小程序框架为开发者提供了一系列的组件和API接口. 组件主要完成小程序的视图部分,例如文字.图片显示.API主要完成逻辑功能,例如网络请求.数据存储.音视频播放控制,以及微信开放的微信登录.微信支付等功能. 组件 官方文档:https://mp.weixin.qq.com/debug/wxadoc/dev/component/ 对于开发文档,个人建议先了解其整体框架,了解其提供了哪些组件,再联想到这些组件会用在哪些产品的哪些功能.对于接口也是一样,整体了解,而不需要细看. 熟悉了文档的结构,

超好用超短的小程序请求封装

超好用超短的小程序请求封装,也不算特别特别短吧哈哈哈.但真的很好用的一个小程序请求封装,在请求的时候简短提高效率不需要将一样的东西重复写.下面就让大家看看这个封装是有多短,不够短的话也请别打我 网上多数使用的小程序封装是在单独的一个js文件,再使用module.exports进行输出方法.我所介绍的封装方法有异曲同工之妙,只不过是写在app.js里边,省去了使用时必须引用文件的麻烦. app.js xcxPost(options = {}) { wx.showLoading({ mask: tr