uni-app 红包广告显示倒计时任务

发布于 1周前 作者 ionicwang 来自 Uni-App

uni-app 红包广告显示倒计时任务

2 回复

有偿,联系QQ:1559653449


在处理 uni-app 中的红包广告显示倒计时任务时,你可以利用 Vue 的生命周期函数和定时器来实现这一功能。以下是一个基本的代码案例,展示如何在 uni-app 中实现一个红包广告倒计时功能。

首先,假设你有一个页面组件,例如 RedPacketPage.vue,在这个页面中显示红包广告并进行倒计时。

<template>
  <view class="container">
    <view v-if="isRedPacketVisible" class="red-packet">
      <text>领取红包倒计时:{{ countdown }}</text>
    </view>
    <view v-else class="content">
      <!-- 其他页面内容 -->
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      isRedPacketVisible: false, // 控制红包广告显示
      countdown: 0, // 倒计时
      timer: null, // 定时器
    };
  },
  methods: {
    startRedPacketCountdown(duration) {
      this.isRedPacketVisible = true;
      this.countdown = duration;
      this.timer = setInterval(() => {
        if (this.countdown > 0) {
          this.countdown -= 1;
        } else {
          clearInterval(this.timer);
          this.timer = null;
          this.isRedPacketVisible = false; // 倒计时结束,隐藏红包广告
        }
      }, 1000); // 每秒更新一次倒计时
    },
  },
  mounted() {
    // 模拟在组件挂载后立即开始倒计时,例如设置5秒倒计时
    this.startRedPacketCountdown(5);
  },
  beforeDestroy() {
    // 组件销毁前清除定时器,防止内存泄漏
    if (this.timer) {
      clearInterval(this.timer);
      this.timer = null;
    }
  },
};
</script>

<style scoped>
.container {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
}
.red-packet {
  background-color: red;
  color: white;
  padding: 20px;
  border-radius: 10px;
}
.content {
  /* 其他页面内容的样式 */
}
</style>

在这个示例中,startRedPacketCountdown 方法接收一个倒计时的总时长(以秒为单位),并开始倒计时。mounted 钩子函数用于在组件挂载后立即启动倒计时。beforeDestroy 钩子函数确保在组件销毁前清除定时器,防止内存泄漏。

你可以根据实际需求调整倒计时的触发时机和时长,以及在倒计时结束后执行的其他逻辑(例如跳转到另一个页面或显示一个提示信息)。这个代码案例提供了一个基本框架,你可以在其基础上进行扩展和优化。

回到顶部