uniapp开发替换showToast组件

问题

  • uniapp的showToast成功回调没有在duration之后,而是直接执行。

解决方案

  • 思路:依照原有的showToast,重新设计一个组件完成,并调整回调为经过duration后执行。
  • 组件代码
<template>
	<div class="toast" v-show="visible">
		<i :class="iconClass"></i>
		<p class=""> {{ message }} </p>
	</div>
</template>
<script>
export default {
  props: {
  },
  data() {
	return {
	  visible: false,
	  message: '',
	  iconClass: 'uni-icon-success-no-circle'
	}
  },
  methods: {
	show(obj) {
	  if (!obj && !obj.title) {
		  return;
	  }
	  this.message = obj.title;
	  if (obj.icon) {
		  this.iconClass = obj.icon;
	  }
	  let params = {
		  duration: 1500,
		  callback: function(){},
	  }
	  this.visible = true;
	  if (obj.callback) {
		  params.callback = obj.callback;
	  }
	  if (obj.duration) {
		  params.duration = obj.duration;
	  }
	  this.message = obj.title;
	  setTimeout(() => {
		this.hide();
		params.callback();
	  }, params.duration)
	},
	hide() {
	  this.visible = false
	}
  }
}
</script>
<style>
.toast {
  position: fixed;
  z-index: 999;
  width: 8em;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: rgba(17,17,17,.7);
  text-align: center;
  color: #fff;
  border-radius: 5px;
}
.toast i{
	margin: 15px 0 0;
	font-size: 55px;
}
.toast p {
	margin: 0 0 15px;
	font-size: 16px;
}
</style>
  • 使用代码
<template>
	.....
	<view class="button-container">
		<button type="primary" class="button" size="mini" @click="showToastTest">提交</button>
	</view>
	.....
	<view>
		<show-toast ref="toast"></show-toast>
	</view>
</template>
<script>
	import showToast from '../../components/toast/commonToast.vue'
	export default {
		components: {
			showToast,
		},
		methods: {
			showToastTest() {
				let that = this;
				this.$refs.toast.show({
					title: '提示信息',
					duration: 1500,
					callback: function() {
						that.$refs.toast.show({
							title: 'success'
						});
					}
				});
			},
			.....
		},
		......
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

田秋浩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值