HarmonyOS鸿蒙Next中如何在快应用中实现倒计时组件

HarmonyOS鸿蒙Next中如何在快应用中实现倒计时组件

  1. 什么是倒计时组件

    倒计时组件主要用于展示促销商品剩余活动时间,到时发送事件提醒等场景。

    • 倒计时支持设置天、时、分、秒
    • 支持设置文字颜色、背景色,边框宽度、样式、颜色,分隔符颜色、分隔符样式(文字分隔符、冒号分隔符);
    • 支持延时触发倒计时;
    • 支持触发倒计时结束回调事件

    倒计时(Countdown)组件结构大致分为两部分,一部分是数字,表示倒计时的天、时、分、秒单位,另一部分是分隔符,用于分隔数字,常见的分隔符为文字分隔符(天、时、分、秒)和冒号分隔符。

  2. 实现步骤

    2.1 自定义子组件

    倒计时整体外观都是通用的,但是内部具体的样式有区别,在设计的时候,不能直接写死内部样式,否则一旦倒计时的UI有变化,会导致子组件也要修改,违背了对外开源引用的初衷。

    所以,子组件countdown.ux中,对外开放多种样式属性方便开发者自定义样式。

    2.2 子组件设计

    支持的属性如下:

    属性 类型 默认值 描述
    day Number 0 倒计时的天
    hour Number 0 倒计时的小时
    minute Number 0 倒计时的分钟
    second Number 0 倒计时的秒
    delay Number 0 倒计时延迟时间
    showDay Boolean true 是否显示天数
    showColon Boolean true 是否以冒号为分隔符
    color String #000000 文字颜色
    splitorColor String #000000 分隔符颜色
    backgroundColor String #FFFFFF 文字背景色
    borderWidth Number 0 文字边框宽度
    borderStyle String solid 文字边框样式
    borderColor String #000000 文字边框颜色

    支持的事件:

    事件名称 参数 描述
    timeup 倒计时结束回调

    2.3 倒计时实现

    • 以text组件布局实现,分为两类,一类是显示文字,一类是显示分隔符
    • 子组件的props中定义相关属性值,父组件引用时传入属性值,子组件通过this.$watch('day', 'changeFlag')监听值的变化后更新子组件的值并进行处理。
    • 倒计时算法:将传入的天、时、分、秒统一换算为秒,设置定时器每过1秒进行递减1,然后重新换算为天、时、分、秒,显示在对应位置上。
  3. 总结

    实现倒计时组件,您可以从中学会如下知识点:

    • 熟悉快应用子组件的设计和属性定义;
    • 熟悉父子组件通信;
    • 熟悉天、时、分、秒的互相转换以及定时器的运用;
    • 熟悉组件样式的设置。
7 回复

写的太详细了 收藏了。

更多关于HarmonyOS鸿蒙Next中如何在快应用中实现倒计时组件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


支持版主,看你的文章一般都会有较大的收获,期待你更多好的作品

找HarmonyOS工作还需要会Flutter技术的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:BV1S4411E7LY/?p=17

很有趣的知识点,大佬就是不一样

倒计时简单,换成代码做出来就难了

支持大佬,对我很有收获,期待你更多好的作品

在HarmonyOS鸿蒙Next中,可以通过快应用框架实现倒计时组件。首先,使用<text>标签显示倒计时时间,然后在script中定义倒计时逻辑,利用setIntervalsetTimeout函数每秒更新一次时间。示例代码如下:

在HarmonyOS鸿蒙Next中,可以通过快应用框架实现倒计时组件。首先,使用<text>标签显示倒计时时间,然后在script中定义倒计时逻辑,利用setIntervalsetTimeout函数每秒更新一次时间。示例代码如下:

export default {
  data: {
    countdown: 10
  },
  onInit() {
    this.startCountdown();
  },
  startCountdown() {
    const timer = setInterval(() => {
      if (this.countdown > 0) {
        this.countdown--;
      } else {
        clearInterval(timer);
      }
    }, 1000);
  }
}

该代码实现了一个从10秒开始的倒计时,每秒更新一次并显示在界面中。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!