session存储数据-解决歌手页面刷新报错的问题
刷新报错的原因是,singer数据是需要在singer.vue页面去传到singerdetail.vue页面的,所以想要重新加载singerdetail页面就必须重新返回到singer页面,很麻烦,想要解决就只需要将数据存储到session中既可以,网站的数据存储一般有两种,一个是location一个是session,这里的话不用用到location,用session这种短暂的会话存储就好,location是本地存储,相对来说没必要,session已经足够
步骤:在singer-detail中定义钩子函数
computedSinger() {
let ret = null
const singer = this.singer
if (singer) {
ret = singer
} else {
const cachedSinger = storage.session.get(SINGER_KEY)
if (cachedSinger && cachedSinger.mid === this.$route.params.id) {
ret = cachedSinger
}
}
return ret
}
在singer和singerdetail中导入storage方法,在constant.js中定义共享常量
在singer中定义cacheStorage方法
cacheStorage(singer) {
storage.session.set(SINGER_KEY, singer)
}
最后注意设置一层过滤防止地址栏改变时出错
if (!this.computedSinger) { // 避免修改地址栏导致获取不到对于的id值,做一个过滤,使得回到上一级路由,显得合理
const path = this.$route.matched[0].path
this.$router.push({
path
})
return
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界