js 每5分钟刷新一次通过el-switch 来控制是否启用自动更新el-switch 通过 v-model 来绑定 store中的状态computed: {autoRefresh: {get() {return this.$store.state.dmx.mvAutoRefresh},set(value) {this.$store....

js 每5分钟刷新一次
通过el-switch 来控制是否启用自动更新
el-switch 通过 v-model 来绑定 store中的状态
computed: {
autoRefresh: {
get() {
return this.$store.state.dmx.mvAutoRefresh
},
set(value) {
this.$store.dispatch('dmx/setAutoRefresh', value)
}
},
dmxTimer() {
return this.$store.state.dmx.dmxTimer
}
}
切换至其他页面时,清除自动刷新,进入时 再根据 autoRefresh 来判断是否加上定时刷新
beforeDestroy() {
clearInterval(this.dmxTimer)
this.$store.dispatch('dmx/clearDmxTimer')
},
mounted() {
this.autoRefreshHandler()
},
methods: {
dmxtest() {
console.log((new Date()) + '----')
},
autoRefreshHandler() {
/** 定时器 **/
if (this.autoRefresh) {
if (this.dmxTimer == null) {
const tmpDmxTimer = setInterval(this.dmxtest, this.dmxTimeout)
this.$store.dispatch('dmx/setDmxTimer', tmpDmxTimer)
}
} else {
if (this.dmxTimer != null) {
clearInterval(this.dmxTimer)
this.$store.dispatch('dmx/clearDmxTimer')
}
}
}
}
dmx.js
// import Cookies from 'js-cookie'
const state = {
// 首页是否自动刷新
mvAutoRefresh: true,
message: 'xxx',
dmxTimer: null
}
const mutations = {
setAutoRefresh: (state, val) => {
state.mvAutoRefresh = val
},
updateMessage: (state, val) => {
state.message = val
},
clearDmxTimer: (state) => {
state.dmxTimer = null
},
setDmxTimer: (state, val) => {
state.dmxTimer = val
}
}
const actions = {
setAutoRefresh: (context, val) => {
context.commit('setAutoRefresh', val)
},
clearDmxTimer: (context) => {
context.commit('clearDmxTimer')
},
setDmxTimer: (context, val) => {
context.commit('setDmxTimer', val)
}
}
export default {
namespaced: true,
state,
mutations,
actions
}
织梦狗教程
本文标题为:自动刷新实现,vuex状态绑定


基础教程推荐
猜你喜欢
- Unicode中的常用字母小结 2022-09-21
- 解决:layUI数据表格+简单查询 2022-12-16
- ajax实现数据分页查询 2023-01-31
- 关于ajax异步访问数据的问题 2023-02-23
- JavaScript垃圾回收机制(引用计数,标记清除,性能优 2022-08-31
- 在IE中为abbr标签加样式 2022-10-16
- 纯javascript的ajax实现php异步提交表单的简单实例 2022-12-28
- AJax 把拿到的后台数据在页面中渲染的实例 2023-02-22
- Ajax提交表单并接收json实例代码 2023-02-13
- 原生ajax瀑布流demo分享(必看篇) 2023-02-01