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>