在vue中使用vuex和sessionStorage管理数据

安装 vuex

npm install vuex --save

vuex安装完成之后,在src文件下建个store文件夹下建个index.js

main.js文件下注册:

//实例化 store
import store from './store/index.js'  

new Vue({
  el: '#app',
  store,   //实例化 store
  router,
  components: { App },
  template: '<App/>'
});

index.js文件如下:

我写了两个方法,建议第二种
import Vue from 'vue';
import vuex from 'vuex';

Vue.use(vuex);

export default new vuex.Store({
  //数据
  state: {
    //第一种方式
    userInfo: {
      fileBizTypeName: '',
      fileSensitiveLevel: '',
      sensitiveNum: '',
      category: '',
    },
    //第二种方式
    linkInfo: sessionStorage.getItem('linkInfo') && JSON.parse(sessionStorage.getItem('linkInfo')) || {
      fileBizTypeName: '',
      fileSensitiveLevel: '',
      sensitiveNum: '',
      category: '',
    },
  },
  //store 的计算属性
  getters: {
    //第一种方式
    getRsaStorage(state) {
      if(state.userInfo.fileBizTypeName == ''){
        state.userInfo.fileBizTypeName = sessionStorage.getItem('fileBizTypeName');
        state.userInfo.fileSensitiveLevel = sessionStorage.getItem('fileSensitiveLevel');
        state.userInfo.sensitiveNum = sessionStorage.getItem('sensitiveNum');
        state.userInfo.category = sessionStorage.getItem('category');
      }
      return state.userInfo;
    }
  },
  //mutation 非常类似于事件
  mutations: {
    //第一种方式
    //sessionStorage 存储
    setStorage(state, userInfo) {
      state.userInfo.fileBizTypeName = userInfo.fileBizTypeName;
      state.userInfo.fileSensitiveLevel = userInfo.fileSensitiveLevel;
      state.userInfo.sensitiveNum = userInfo.sensitiveNum;
      state.userInfo.category = userInfo.category;
      sessionStorage.setItem('fileBizTypeName', userInfo.fileBizTypeName);
      sessionStorage.setItem('fileSensitiveLevel', userInfo.fileSensitiveLevel);
      sessionStorage.setItem('sensitiveNum', userInfo.sensitiveNum);
      sessionStorage.setItem('category', userInfo.category);
    },
      //第二种方式
    $_setLinkInfo(state, linkInfo){
      state.linkInfo.fileBizTypeName = linkInfo.fileBizTypeName;
      state.linkInfo.fileSensitiveLevel = linkInfo.fileSensitiveLevel;
      state.linkInfo.sensitiveNum = linkInfo.sensitiveNum;
      state.linkInfo.category = linkInfo.category;
      sessionStorage.setItem('linkInfo',JSON.stringify(state.linkInfo));
    },
    //sessionStorage 清空
    setRemove(state){
      //第一种方式
      sessionStorage.removeItem('fileBizTypeName');
      sessionStorage.removeItem('fileSensitiveLevel');
      sessionStorage.removeItem('sensitiveNum');
      sessionStorage.removeItem('category');

      state.userInfo= {
        fileBizTypeName: '',
        fileSensitiveLevel: '',
        sensitiveNum: '',
        category: '',
        };

  

      //第二种方式清空
      sessionStorage.removeItem('linkInfo');
      state.linkInfo= {
        fileBizTypeName: '',
        fileSensitiveLevel: '',
        sensitiveNum: '',
        category: '',
        };
    }
  },

})

然后在你需要的页面存储数据


this.$store.commit("setStorage", type); //第一种方式存
this.$store.commit('$_setLinkInfo', type);//第二种方式存

最后在你需要的页面取出数据

this.$store.getters.getRsaStorage.fileBizTypeName //第一种方式取
this.linkInfo.sensitiveNum //第二种方式取

需要注意的是第二种方式我用了computed计算属性

  //第二种方式中对这个数据对象计算
    computed:{
      linkInfo(){
        return this.$store.state.linkInfo;
      },
    },

另外清空的是

this.$store.commit(‘setRemove’);

以上是本章全部内容

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值