uniapp设置缓存,进入页面直接恢复到上次退出界面
关键点
1、在onUnload函数中设置好响应的缓存
2、在onLoad函数中提取设置的缓存
以刷题界面进行举例
1、onUnload函数中的代码
if语句为判断选择题的共用界面类型
onUnload() {
var data = {
'subjectPath':this.name,
'oldIndex':this.cache
}
if(this.cache!=0){
if(this.name=="计算机网络"){//判断科目
if(this.truequestion=="truequestion"){//判断真题
uni.setStorageSync('oldInfo_jsjwl_x_t',data)
//设置缓存,data为数据,‘’中为 key值
}else{
uni.setStorageSync('oldInfo_jsjwl_x',data)
}
}else if(this.name=="计算机系统"){
if(this.truequestion=="truequestion"){
uni.setStorageSync('oldInfo_jsjxt_x_t',data)
}else{
uni.setStorageSync('oldInfo_jsjxt_x',data)
}
}else if(this.name=="英语"){
if(this.truequestion=="truequestion"){
uni.setStorageSync('oldInfo_english_x_t',data)
}else{
uni.setStorageSync('oldInfo_english_x',data)
}
}else{
if(this.truequestion=="truequestion"){
uni.setStorageSync('oldInfo_lssx_x_t',data)
}else{
uni.setStorageSync('oldInfo_lssx_x',data)
}
}
}
},
2、onUnLoad函数中的代码
通过if判断,取出对应科目的缓存
var info=''
if(this.name=="计算机网络"){
if(this.truequestion=="truequestion"){
info = uni.getStorageSync('oldInfo_jsjwl_x_t')
//取出对应缓存,通过key提取
}else{
info = uni.getStorageSync('oldInfo_jsjwl_x')
}
}else if(this.name=="计算机系统"){
if(this.truequestion=="truequestion"){
info = uni.getStorageSync('oldInfo_jsjxt_x_t')
}else{
info = uni.getStorageSync('oldInfo_jsjxt_x')
}
}else if(this.name=="英语"){
if(this.truequestion=="truequestion"){
info = uni.getStorageSync('oldInfo_english_x_t')
}else{
info = uni.getStorageSync('oldInfo_english_x')
}
}else{
if(this.truequestion=="truequestion"){
info = uni.getStorageSync('oldInfo_lssx_x_t')
}else{
info = uni.getStorageSync('oldInfo_lssx_x')
}
}
console.log(info)
//判断上次答题的位置
if(info.oldIndex!=0){//这里的操作是处理分页加载的问题
var num = parseInt(info.oldIndex/20)
for(var i=0;i<num;i++){
this.chooseSubject(this.name)
this.list[i]=-1
}
var that=this
uni.showModal({//提示用户
title:'是否恢复到上次答题位置',
success:res=> {
if(res.confirm){
console.log(res.confirm)
that.questionIndex=info.oldIndex
//跳转到上次离开的页面
}
}
})
}