element-plus开关el-switch实现是否开启定时自动刷新

适用背景:

在我们常见的后台管理端的数据列表页,通常是用户点击【查询】按钮,触发一次查询,然后数据列表更新。

现在要实现一个功能:用一个开关el-switch来实现是否开启定时刷新,例如每隔30秒刷新一次

实现思路:

1先把组件元素基础属性设置好

用的是element-plus的开关组件el-switch

<!-- 开关按钮:控制自动刷新 -->
<el-switch v-model="autoRefreshEnabled" active-text="开启自动刷新" inactive-text="关闭自动刷新"  @change="handleAutoRefreshChange"/>
2添加动作交互,用定时器实现自动刷新
// 开关状态(是否开启自动刷新)
const autoRefreshEnabled = ref(false)

// 定时器 ID(用于清理)
let refreshTimer: number | null = null

// 你要定时执行的【查询列表函数】
const getList = () => {
  // 这里写你真正的列表查询接口
}

// 开关改变时:开启/停止定时
const handleAutoRefreshChange = (val: boolean) => {
  if (val) {
    startAutoRefresh() // 打开 → 启动定时器
  } else {
    stopAutoRefresh() // 关闭 → 清除定时器
  }
}

// 启动自动刷新(每30秒一次,可改时间)
const startAutoRefresh = () => {
  if (refreshTimer) return // 防止重复开
  console.log('已开启自动刷新')
  
  // 立即刷新一次
  getList()
  
  // 循环刷新(30*1000 = 30秒)
  refreshTimer = window.setInterval(() => {
    getList()
  }, 30000)
}

// 停止自动刷新
const stopAutoRefresh = () => {
  if (refreshTimer) {
    clearInterval(refreshTimer)
    refreshTimer = null
    console.log('已关闭自动刷新')
  }
}

// 页面加载:如果默认开启,就启动
onMounted(() => {
  if (autoRefreshEnabled.value) {
    startAutoRefresh()
  }
})
3别忘了清理销毁定时器

如果没有手动关闭销毁定时器,别忘了在页面卸载时来个保险

// 页面销毁:清理定时器,避免bug
onUnmounted(() => {
  stopAutoRefresh()
})

【注】:以上刚好是我工作中遇到的小需求,分享一下思路,如果有什么疑问,欢迎小伙伴友好讨论😁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序媛七分

随多随少随你心意^-^

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值