• Vant React

Countdown 倒计时

介绍

用于实时展示倒计时数值,支持毫秒精度。

引入

import { Countdown } from "@taroify/core"

代码演示

基础用法

value 属性表示倒计时总时长,单位为毫秒。

<Countdown value={30 * 60 * 60 * 1000} />

自定义格式

通过 format 属性设置倒计时文本的内容。

<Countdown value={30 * 60 * 60 * 1000} format="DD 天 HH 时 mm 分 ss 秒" />

毫秒级渲染

倒计时默认每秒渲染一次,设置 interval 属性可以开启毫秒级渲染。

<Countdown interval={1} value={30 * 60 * 60 * 1000} format="HH:mm:ss:SS" />

自定义样式

通过 children 自定义倒计时的样式,current 对象格式见下方表格。

<Countdown value={30 * 60 * 60 * 1000}>
  {(current) => (
    <>
      <View className="block">{current.hours}</View>
      <View className="colon">:</View>
      <View className="block">{current.minutes}</View>
      <View className="colon">:</View>
      <View className="block">{current.seconds}</View>
    </>
  )}
</Countdown>
.colon {
  display: inline-block;
  margin: 0 4px * 2;
  color: #ee0a24;
}

.block {
  display: inline-block;
  width: 22px * 2;
  color: #fff;
  font-size: 12px * 2;
  text-align: center;
  background-color: #ee0a24;
  border-radius: 4px * 2;
}

手动控制

通过 useCountdown 获取返回值后,可以调用 startpausestoprestart 方法。

function CountdownWithManualControl() {
  const countRef = useRef<CountdownInstance>(null)
  return (
    <>
      <Toast id="toast" />
      <Countdown
        className="manual-control"
        ref={countRef}
        value={30 * 1000}
        format="ss:SSS"
        onComplete={() => Toast.open("倒计时结束")}
      />
      <Grid columns={3} clickable>
        <Grid.Item
          icon={<PlayCircleOutlined />}
          text="开始"
          onClick={() => countRef.current?.start()}
        />
        <Grid.Item
          icon={<PauseCircleOutlined />}
          text="暂停"
          onClick={() => countRef.current?.pause()}
        />
        <Grid.Item icon={<Replay />} text="重置" onClick={() => countRef.current?.restart()} />
      </Grid>
    </>
  )
}

API

Props

参数说明类型默认值
value倒计时时长,单位毫秒number0
format时间格式stringHH:mm:ss
autostart是否自动开始倒计时booleantrue
interval倒计时渲染间隔,单位毫秒number1000
onChange倒计时变化时触发(currentTime: CurrentTime) => void-
onComplete倒计时结束时触发() => void-

format 格式

格式说明
DD天数
HH小时
mm分钟
ss秒数
S毫秒(1 位)
SS毫秒(2 位)
SSS毫秒(3 位)

CurrentTime 格式

名称说明类型
total剩余总时间(单位毫秒)number
days剩余天数number
hours剩余小时number
minutes剩余分钟number
seconds剩余秒数number
milliseconds剩余毫秒number

方法

通过 ref 可以获取到 Countdown 实例并调用实例方法。

方法名说明参数返回值
start开始倒计时--
pause暂停倒计时--
reset重设倒计时,若 autostarttrue,重设后会自动开始倒计时--
restart重启倒计时--

主题定制

样式变量

组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 ConfigProvider 组件。

名称默认值描述
—countdown-colorvar(—text-color)-
—countdown-font-sizevar(—font-size-md)-
—countdown-line-heightvar(—line-height-md)-