一、创建倒计时组件首先,在src/components/目录下创建一个countdown.vue组件:
<template> <div class="countdown"> <span>{{ formatcountdowntime }}</span> </div></template><script>import { ref, onmounted, onunmounted } from 'vue';export default { name: 'countdown', props: { endtime: { type: string, required: true } }, setup(props) { const countdowntime = ref('00:00:00'); // 计算倒计时时间 const calccountdowntime = () => { const diff = date.parse(props.endtime) - date.parse(new date()); const seconds = math.floor(diff / 1000); if (seconds <= 0) { countdowntime.value = '00:00:00'; clearinterval(intervalid); } else { const hours = math.floor(seconds / 3600); const minutes = math.floor((seconds - hours * 3600) / 60); const leftseconds = seconds - hours * 3600 - minutes * 60; countdowntime.value = `${formattime(hours)}:${formattime(minutes)}:${formattime(leftseconds)}`; } }; // 格式化时间 const formattime = (time) => { return time < 10 ? `0${time}` : time; } let intervalid; onmounted(() => { calccountdowntime(); intervalid = setinterval(() => { calccountdowntime(); }, 1000); }); onunmounted(() => { clearinterval(intervalid); }); return { countdowntime, formatcountdowntime: ref('00:00:00') }; }};</script><style>.countdown { font-size: 18px; font-weight: bold;}</style>
这个组件接受一个名为endtime的prop,表示倒计时的结束时间。在组件中,我们使用了vue.js 3.0中的composition api来计算倒计时,并在mounted和unmounted生命周期中开启和关闭倒计时。其中,calccountdowntime函数负责计算倒计时,formattime函数负责格式化时间,intervalid用于标记定时器。
二、封装插件接着,我们将倒计时组件封装成一个vue.js插件。在src/plugins/目录下创建一个countdown.js文件:
import countdown from '@/components/countdown.vue';const countdownplugin = { install(app) { app.component(countdown.name, countdown); }};export default countdownplugin;
在插件中,我们使用app.component方法将countdown组件注册为全局组件。这样,在其他组件中就可以直接使用倒计时组件了。
三、使用插件现在,我们可以将封装好的倒计时插件用于具体的业务场景中。在组件中,我们需要先使用vue.js插件来注册倒计时组件,然后就可以在模板中使用countdown组件了。例如,在home.vue组件中:
<template> <div class="home"> <countdown :endtime="endtime" /> </div></template><script>import { ref } from 'vue';import countdownplugin from '@/plugins/countdown.js';export default { name: 'home', setup() { const endtime = ref('2021-10-30 00:00:00'); return { endtime }; }, mounted() { vue.use(countdownplugin); }};</script><style></style>
在这个例子中,我们在mounted钩子函数中使用countdownplugin插件来注册countdown组件,然后在模板中使用countdown组件,并传递一个名为endtime的prop,表示倒计时的结束时间。
到此,我们就成功地封装了一个倒计时组件,并将其封装成vue.js插件,使其变得更加便捷和可复用。在实际项目中,我们可以根据实际业务需求,定制化这个组件,使其更加符合实际需求。
以上就是vue3开发基础:使用vue.js插件封装倒计时组件的详细内容。
