vue3-count-to 数字跳动vue3.0

<template>

  <BaseCountTo

    ref="vueCountTo"

    :startVal="startVal"

    :endVal="endVal"

    :duration="duration"

    :decimals="decimals"

    :prefix="prefix"

    :suffix="suffix"

    :decimal="decimal"

    :separator="separator"

  />

</template>

<script lang="ts">

import { CountTo as BaseCountTo } from 'vue3-count-to'

import {

  defineComponent,

  toRefs,

  ref,

  onMounted,

  unref,

  onBeforeUnmount,

  watch

} from 'vue'

import type { PropType } from 'vue'

export default defineComponent({

  name: 'CountTo',

  components: { BaseCountTo },

  props: {

    duration: {

      type: Number as PropType<number>,

      default: 3000

    },

    startVal: {

      type: Number as PropType<number>,

      default: 0

    },

    endVal: {

      type: Number as PropType<number>,

      default: 0

    },

    enableLoop: {

      //是否开启循环

      type: Boolean as PropType<boolean>,

      default: true

    },

    loopTime: {

      //循环事件

      type: Number as PropType<number>,

      default: 10 * 1000

    },

    decimals: {

      //小数点位数

      type: Number as PropType<number>,

      default: 0

    },

    prefix: {

      //前缀

      type: String as PropType<string>,

      default: ''

    },

    suffix: {

      //后缀

      type: String as PropType<string>,

      default: ''

    },

    decimal: {

      //十进制分割

      type: String as PropType<string>,

      default: '.'

    },

    separator: {

      //分隔符

      type: String as PropType<string>,

      default: ','

    }

  },

  setup(props) {

    const vueCountTo = ref<null | HTMLElement>(null)

    let timer: any = null

    onMounted(() => {

      addLoop()

    })

    //添加循环

    const addLoop = () => {

      if (props.enableLoop) {

        const dom = unref(vueCountTo)

        if (dom) {

          // console.log(dom)

          timer = setInterval(() => {

            ;(dom as any).reset()

            ;(dom as any).start()

          }, props.loopTime as number)

        }

      }

    }

    watch(

      () => props.endVal,

      () => {

        clearInterval(timer)

        addLoop()

      }

    )

    onBeforeUnmount(() => {

      clearInterval(timer)

    })

    return {

      ...toRefs(props),

      vueCountTo

    }

  }

})

</script>

<style lang="scss" scoped></style>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3-count-to是一个用于实现滚动数字效果的Vue.js插件。它是基于Vue3版本开发的,可以用于数据可视化大屏开发等场景。在Vue3中使用vue-count-to插件可能会出现一些问题,因为Vue3的语法和Vue2有所不同。可以通过引用和引用中提供的代码来了解如何在Vue3中使用vue3-count-to插件。具体来说,可以使用"import"语句引入vue3-count-to插件的CountTo组件,并使用"ref"函数来创建一个可变的引用对象来存储HTMLElement元素。然后,在模板中使用CountTo组件,并传递相应的属性值来配置滚动数字的效果。例如,可以设置"startVal"表示起始值,"endVal"表示结束值,"duration"表示滚动时长等等。同时,在模板中还可以使用其他Vue3的语法,如路由导航等。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [vue3-count-to 数字跳动vue3.0](https://blog.csdn.net/wwf1225/article/details/123917275)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [vue3使用vue-count-to组件](https://blog.csdn.net/qq_38330707/article/details/111514478)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值