微信小程序自定义toast的实现代码


Posted in Javascript onNovember 16, 2018

今天写微信小程序突然发现一个尴尬的问题,请求报错需要提示,就去小程序API里找,可悲的小程序的toast并不能满足我的需求,原生提供的方法调用如下

wx.showToast({
  title: '成功',
  icon: 'succes',
  duration: 1000,
  mask:true
})

下面是官方API的说明

可以看到支持的图标只有两种,连基本的warning和error都没有,最可悲的是title最多只支持7个汉字的长度,完全不能忍啊,现在哪个框架里还没有个正儿八经提示框的组件,想想还是自己写一个算了,下面是效果图

下面来说下小程序实现自定义公共组件的方法,以自定义toast为例

1、新建toast组件

在toast.json里修改如下,设置为组件

{
 "component": true
}

toast.wxml

<view class='wx-toast-box' animation="{{animationData}}">
 <view class='wx-toast-content'>
  <view class='wx-toast-toast'>{{ content }}</view>
 </view>
</view>

定义样式,toast.wxss,这里使用flex布局,代码很简单,也没什么好说的,直接贴上

.wx-toast-box{
 display: flex;
 width: 100%;
 justify-content: center;
 position: fixed;
 z-index: 999;
 bottom:80rpx;
 opacity: 0;
}
.wx-toast-content{
 max-width: 80%;
 border-radius:30rpx;
 padding: 30rpx;
 background: rgba(0, 0, 0, 0.6);
}
.wx-toast-toast{
 height: 100%;
 width: 100%;
 color: #fff;
 font-size: 28rpx;
 text-align: center;
}

toast.js

Component({
 options: {
  multipleSlots: true // 在组件定义时的选项中启用多slot支持 
 },
 /** 
  * 私有数据,组件的初始数据 
  * 可用于模版渲染 
  */
 data: { // 弹窗显示控制 
  animationData: {},
  content: '提示内容'
 },
 /**
  * 组件的方法列表 
  */
 methods: {
  /** 
   * 显示toast,定义动画
   */
  showToast(val) {
   var animation = wx.createAnimation({
    duration: 300,
    timingFunction: 'ease',
   })
   this.animation = animation
   animation.opacity(1).step()
   this.setData({
    animationData: animation.export(),
    content: val
   })
   /**
    * 延时消失
    */
   setTimeout(function () {
    animation.opacity(0).step()
    this.setData({
     animationData: animation.export()
    })
   }.bind(this), 1500)
  }
 }
})

2、在父级组件中调用公共组件,以login页面为例

在login.json中注册组件

{
 "navigationBarTitleText": "登录注册",
 "usingComponents":{
  "toast": "../common/toast/toast"
 }
}

login.wxml中调用组件

<view>
 <toast id='toast'>
 </toast>
</view>

login.js里点击登陆录的时候调用显示showDialog方法

onReady: function () {
  this.toast = this.selectComponent("#toast");
},
listenerLogin: function() {
  this.dialog.showToast('恭喜你,获得了toast');
},

总结

以上所述是小编给大家介绍的微信小程序自定义toast的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Jquery 学习笔记(一)
Oct 13 Javascript
JS复制到剪贴板示例代码
Oct 30 Javascript
JavaScript实现基于Cookie的存储类实例
Apr 10 Javascript
js改变Iframe中Src的方法
May 05 Javascript
jquery实现下拉框功能效果【实例代码】
May 06 Javascript
vue2.0实战之基础入门(1)
Mar 27 Javascript
通过vue提供的keep-alive减少对服务器的请求次数
Apr 01 Javascript
探索JavaScript中私有成员的相关知识
Jun 13 Javascript
解决layui 表单元素radio不显示渲染的问题
Sep 04 Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
Mar 17 Javascript
全面解析JavaScript Module模式
Jul 24 Javascript
如何使用three.js 制作一个三维的推箱子游戏
Jul 29 Javascript
vue实现简单的星级评分组件源码
Nov 16 #Javascript
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
Nov 16 #Javascript
layui-laydate时间日历控件使用方法详解
Nov 15 #Javascript
laydate如何根据开始时间或者结束时间限制范围
Nov 15 #Javascript
layDate插件设置开始和结束时间
Nov 15 #Javascript
解决vue2 在mounted函数无法获取prop中的变量问题
Nov 15 #Javascript
vue中使用better-scroll实现滑动效果及注意事项
Nov 15 #Javascript
You might like
PHP实现多条件查询实例代码
2010/07/17 PHP
PHP封装的多文件上传类实例与用法详解
2017/02/07 PHP
HR vs CL BO3 第一场 2.13
2021/03/10 DOTA
执行iframe中的javascript方法
2008/10/07 Javascript
JavaScript 数组运用实现代码
2010/04/13 Javascript
Javascript 中的 &amp;&amp; 和 || 使用小结
2010/04/25 Javascript
iframe异步加载实现点击左边菜单加载右边内容实例讲解
2013/03/04 Javascript
Javascript WebSocket使用实例介绍(简明入门教程)
2014/04/16 Javascript
jquery序列化表单以及回调函数的使用示例
2014/07/02 Javascript
详解JavaScript ES6中的模板字符串
2015/07/28 Javascript
jQuery蓝色风格滑动导航栏代码分享
2015/08/19 Javascript
javascript实现2016新年版日历
2016/01/25 Javascript
JS继承之借用构造函数继承和组合继承
2016/09/07 Javascript
vue.js 获取当前自定义属性值
2017/06/01 Javascript
React 子组件向父组件传值的方法
2017/07/24 Javascript
AngularJS实现的获取焦点及失去焦点时的表单验证功能示例
2017/10/25 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
15分钟深入了解JS继承分类、原理与用法
2019/01/19 Javascript
Vue 事件处理操作实例详解
2019/03/05 Javascript
vue+element实现打印页面功能
2019/05/20 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
Javascript模块化机制实现原理详解
2020/04/02 Javascript
解决vue init webpack 下载依赖卡住不动的问题
2020/11/09 Javascript
python端口扫描系统实现方法
2014/11/19 Python
Python描述器descriptor详解
2015/02/03 Python
用Python脚本来删除指定容量以上的文件的教程
2015/05/04 Python
利用python程序生成word和PDF文档的方法
2017/02/14 Python
Python生成器以及应用实例解析
2018/02/08 Python
详解Django模版中加载静态文件配置方法
2019/07/21 Python
Python超越函数积分运算以及绘图实现代码
2019/11/20 Python
Python下载网易云歌单歌曲的示例代码
2020/08/12 Python
美国大尺码女装零售商:TORRID
2016/10/01 全球购物
意大利领先的线上奢侈品销售电商:Eleonora Bonucci
2017/10/17 全球购物
Unix控制后台进程都有哪些进程
2016/09/22 面试题
学校办公室主任职责
2013/12/27 职场文书
jdbc使用PreparedStatement批量插入数据的方法
2021/04/27 MySQL