Vue 路由器和 setTimeout
Vue router and setTimeout
我有一个带有 VueRouter 的 Vue 3 页应用程序。在第一页上,我每分钟使用 setTimeout 询问服务器。在移动到下一页时,计时器丢失并在再次打开第一页时重新初始化。我希望计时器继续在后台工作。是否可行以及如何完成?
只需将计时器放在您的根组件中(例如,App.vue
),因为该组件将始终存在:
export default {
mounted() {
const pages = [ '/page1', '/page2', '/page3' ]
let currentPage = 0
this._timerId = setInterval(() => {
this.$router.push(pages[currentPage++ % pages.length])
}, 3000) // every 3 seconds
},
// Vue 2
beforeDestroy() {
clearInterval(this._timerId)
},
// Vue 3
unmounted() {
clearInterval(this._timerId)
}
}
我有一个带有 VueRouter 的 Vue 3 页应用程序。在第一页上,我每分钟使用 setTimeout 询问服务器。在移动到下一页时,计时器丢失并在再次打开第一页时重新初始化。我希望计时器继续在后台工作。是否可行以及如何完成?
只需将计时器放在您的根组件中(例如,App.vue
),因为该组件将始终存在:
export default {
mounted() {
const pages = [ '/page1', '/page2', '/page3' ]
let currentPage = 0
this._timerId = setInterval(() => {
this.$router.push(pages[currentPage++ % pages.length])
}, 3000) // every 3 seconds
},
// Vue 2
beforeDestroy() {
clearInterval(this._timerId)
},
// Vue 3
unmounted() {
clearInterval(this._timerId)
}
}