今天朋友问我一个问题 说路由离开后 怎么清除定时器 我理解的就是页面离开了 清掉定时器 然后就给他说 在beforeDestroy生命周期里面清掉就行了 然后他说不行 我郁闷死了 怎么可能呢 然后让他给我截图 他是直接写的一个定时器 没有指定名字 然后我也就无奈了 

期间 我自己也动手试了试 奇怪的是 我也清理不掉 不管怎么清理 都是不行 这就让我一头雾水了  开始我最先想到的是我vue版本的问题 我当时用的是vue3.0 所以 我又去扒api 发现vue3.0的beforeDestroy生命周期有所改动 变成了beforeUnmount  唉~ 无奈 

同时  vue3.0新增了几个生命周期  生命周期

<script>
import { setup,onMounted,onBeforeUnmount} from "vue"
import { useRouter} from "vue-router"
export default {
  name: '',
  setup(){
    const route = useRouter()
    const toLogin =()=>{
      route.push("/login")
    }
    let timer = null
    onMounted(()=>{
      timer = setInterval(()=>{
        console.log(999)
      },1000)
    })
    onBeforeUnmount(()=>{
      clearInterval(timer)
    })
    return {
      toLogin
    }
  },
  // methods:{
  //   toLogin(){
  //     console.log(this.timer)
  //     this.$router.push("/login")
  //   }
  // },
  // mounted(){
  //   this.timter = setInterval(()=>{
  //     console.log(999)
  //   },1000)
  // },
  // beforeUnmount() {
  //   clearInterval(this.timter)
  // },
}

Logo

前往低代码交流专区

更多推荐