1. 引入
import { useIntervalFn } from '@vueuse/core'
2. 格式
const {pause, resume } =useIntervalFn(() => {// 具体要做的事情 }, 间隔时间, { immediate: false|true })
pause() // 暂停,停止
resume()// 继续,开始
3.使用
export const useCountdown = () => {
const time = ref(0)
const { pause, resume } = useIntervalFn(() => {
// 每隔多长时间做什么 回调
time.value--
if (time.value <= 0) {
pause()
}
console.log('useIntervalFn', Date.now())
}, 1000, { immediate: false })
// pause: 暂停,
// resume: 开始
const start = (num) => {
time.value = num
resume()
}
return { time, start }
}
在setup中。
const { time, start } = useCountdown()
// 发手机验证码
const send = async () => {
// 1. 验证手机号格式
if (mobile(formData.mobile) !== true) {
Message({ type: 'error', text: '手机号格式不对' })
return
}
if (time.value !== 0) {
return
}
// 2.调用api
try {
await userMobileLoginMsg(formData.mobile)
Message({ type: 'success', text: '验证码已经发送!' })
// 倒计时
start(60)
} catch (err) {
console.dir(err)
Message({ type: 'error', text: err.response.data.message })
}
}
修改视图
<span @click="send()" class="code">
{{time===0?'发送验证码':`${time}秒后发送`}}
</span>
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。