首先将数据存储在localStorage中,因为 localStorage只能存字符串我这里是json,现将json转为字符串保存
autoSaveData() {
// 将填写的数据但未提交保存在本地
this.tempData = []
this.tempData.push(this.formID)
this.tempData.push(this.formName)
this.tempData.push(this.formBuilder.actions.getData('json'))
localStorage.setItem('formTempData', JSON.stringify(this.tempData))
// this.$message.success('已自动保存')
},
每隔十秒执行autoSaveData。
单纯的使用setInterval会导致页面卡死,setInterval不会清除定时器队列,每重复执行1次都会导致定时器叠加,最终卡死,
但是setTimeout是自带清除定时器的,因此此方法可以实现每隔10执行一次的功能。
changeValue() {
this.timer = window.setInterval(() => {
setTimeout(this.autoSaveData(), 0)
}, 10000)
},
但是还存在一个问题,就是当不在等前页面时,定时器依旧在执行,这里需要在离开页面时将定时器清空