微信小程序自定义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 相关文章推荐
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
Dec 28 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
Jun 29 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
Jan 27 Javascript
JavaScript DOM元素尺寸和位置
Apr 13 Javascript
jQuery插件jquery-barcode实现条码打印的方法
Nov 25 Javascript
javascript 网页进度条简单实例
Feb 22 Javascript
十大 Node.js 的 Web 框架(快速提升工作效率)
Jun 30 Javascript
vue注册组件的几种方式总结
Mar 08 Javascript
layer.open组件获取弹出层页面变量、函数的实例
Sep 25 Javascript
JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】
May 01 Javascript
jQuery实现鼠标拖拽登录框移动效果
Sep 13 jQuery
详解为什么Vue中的v-if和v-for不建议一起用
Jan 13 Vue.js
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
简单易用的计数器(数据库)
2006/10/09 PHP
PHP.ini中配置屏蔽错误信息显示和保存错误日志的例子
2014/05/12 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
2015/12/10 PHP
基于php实现的验证码小程序
2016/12/13 PHP
php使用fullcalendar日历插件详解
2019/03/06 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
JS图片浏览组件PhotoLook的公开属性方法介绍和进阶实例代码
2010/11/09 Javascript
一些有用的JavaScript和jQuery的片段分享
2011/08/23 Javascript
javascript代码编写需要注意的7个小细节小结
2011/09/21 Javascript
js弹出层(jQuery插件形式附带reLoad功能)
2013/04/12 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
JQuery实现左右滚动菜单特效
2015/09/28 Javascript
分享jQuery封装好的一些常用操作
2016/07/28 Javascript
jQuery图片切换动画特效
2016/11/02 Javascript
利用transition实现文字上下抖动的效果
2017/01/21 Javascript
Vuex利用state保存新闻数据实例
2017/06/28 Javascript
JavaScript实现设置默认日期范围为最近40天的方法分析
2017/07/12 Javascript
JS非空验证及邮箱验证的实例
2017/08/11 Javascript
js精确的加减乘除实例
2017/11/14 Javascript
在js代码拼接dom对象到页面上的模板总结
2018/10/21 Javascript
原生js实现随机点餐效果
2019/12/10 Javascript
在Angular项目使用socket.io实现通信的方法
2021/01/05 Javascript
[03:04]2018年度DOTA2玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
使用Python编写简单的端口扫描器的实例分享
2015/12/18 Python
使用python爬取B站千万级数据
2018/06/08 Python
python3实现点餐系统
2019/01/24 Python
关于tensorflow softmax函数用法解析
2020/06/30 Python
如何使用 Python 读取文件和照片的创建日期
2020/09/05 Python
澳大利亚实惠时尚女装商店:Katies
2019/06/16 全球购物
巴西24小时在线药房:Droga Raia
2020/05/12 全球购物
台湾屈臣氏网路商店:Watsons台湾
2020/12/29 全球购物
远程研修随笔感言
2014/02/10 职场文书
教师听课评语大全
2014/12/31 职场文书
麦田里的守望者读书笔记
2015/06/30 职场文书
pytorch 实现变分自动编码器的操作
2021/05/24 Python
canvas 中如何实现物体的框选
2022/08/05 Javascript