微信小程序自定义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 相关文章推荐
parseInt parseFloat js字符串转换数字
Aug 01 Javascript
jQuery图片预加载 等比缩放实现代码
Oct 04 Javascript
JavaScript面向对象的实现方法小结
Apr 14 Javascript
javascript事件委托的用法及其好处简析
Apr 04 Javascript
js实现可旋转的立方体模型
Oct 16 Javascript
jQuery判断邮箱格式对错实例代码讲解
Apr 12 jQuery
基于JavaScript实现图片连播和联级菜单实例代码
Jul 28 Javascript
vue删除html内容的标签样式实例
Sep 13 Javascript
深入浅析Vue.js 中的 v-for 列表渲染指令
Nov 19 Javascript
pm2发布node配置文件ecosystem.json详解
May 15 Javascript
了解JavaScript中let语句
May 30 Javascript
微信小程序点击列表跳转到对应详情页过程解析
Sep 26 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
上海牌131型七灯四波段四喇叭一级收音机
2021/03/02 无线电
php连接mysql数据库代码
2009/03/10 PHP
PHP 向右侧拉菜单实现代码,测试使用中
2009/11/03 PHP
ThinkPHP的模版中调用session数据的方法
2014/07/01 PHP
php建立Ftp连接的方法
2015/03/07 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
2015/12/25 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
2016/07/13 PHP
javascript 简练的几个函数
2009/08/29 Javascript
JavaScript中的变量声明早于赋值分析
2012/03/01 Javascript
fancybox modal的完美解决(右上的X)
2012/10/30 Javascript
jquery attr方法获取input的checked属性问题
2014/05/26 Javascript
jQuery中:input选择器用法实例
2015/01/03 Javascript
jQuery检测鼠标左键和右键点击的方法
2015/03/17 Javascript
通过伪协议解决父页面与iframe页面通信的问题
2015/04/05 Javascript
JavaScript中的toLocaleDateString()方法使用简介
2015/06/12 Javascript
Vue项目中引入外部文件的方法(css、js、less)
2017/07/24 Javascript
Angular中自定义Debounce Click指令防止重复点击
2017/07/26 Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
2017/11/13 jQuery
Angularjs实现多图片上传预览功能
2018/07/18 Javascript
Vue中的作用域CSS和CSS模块的区别
2018/10/09 Javascript
详解vantUI框架在vue项目中的应用踩坑
2018/12/06 Javascript
JS监听滚动和id自动定位滚动
2018/12/18 Javascript
axios+Vue实现上传文件显示进度功能
2019/04/14 Javascript
使用Webpack 搭建 Vue3 开发环境过程详解
2020/07/28 Javascript
vue 在单页面应用里使用二级套嵌路由
2020/12/19 Vue.js
[01:00:14]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第二场 2月28日
2021/03/11 DOTA
使用python创建生成动态链接库dll的方法
2020/05/09 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
2020/07/20 Python
现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
2012/11/09 面试题
新闻专业本科生的自我评价分享
2013/11/20 职场文书
高三学习决心书
2014/03/11 职场文书
软件售后服务方案
2014/05/29 职场文书
党员教师四风问题对照检查材料
2014/09/26 职场文书
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android
Java8利用Stream对列表进行去除重复的方法详解
2022/04/14 Java/Android
Java设计模式之代理模式
2022/04/22 Java/Android