问题描述:

  移动端底部导航栏切换时更换图标,切换状态,有两种解决方案,一是通过路由query传值,而是用vuex保存状态,我选择用vuex,但是页面刷新了会丢失状态值,一顿百度,发现js运行在内存中的,所有变量函数啊都是在内存中的,刷新页面以前申请的内存被释放,重新加载脚本代码,变量重新赋值,所以这些数据要想储存就必须储存在外部,比如localStroage和sessionStorage,

我在APP.VUE中:

 1 export default {
 2   name: "App",
 3   components: {},
 4   created(){
 5     if(sessionStorage.getItem('store')){
 6       this.$store.replaceState(
 7         Object.assign(
 8           {},
 9           this.$store.state,
10           JSON.parse(sessionStorage.getItem('store'))
11         )
12       )
13     }
14     //页面加载之前存到sessionStoarge里
15     window.addEventListener('beforeunload',()=>{
16       sessionStorage.setItem('store',JSON.stringify(this.$store.state));
17     })
18   }
19 };

这样就解决了

为此,我发现JS 的内存,堆,栈,执行环境,http,https 这些鬼玩意真的需要好好的去认识一下。难怪面试会被问,因为工作中真的需要,好多好多东西要去学,学不动了~~

posted on 2021-02-26 15:50  你这个梦,有点大  阅读(203)  评论(0编辑  收藏  举报