vue3+ts 全局挂载storage+store

封装storage

const STORAGE_KEY = 'aqd'

export interface storageInstance {
    getStorage(): any
    clearModuleKye(key:string,module_name:string):any
    clearKey(key:string):any
    getItemModule(key:string,module_name:string):any
    getItemKey(key:string):any
    setItemMOduleKey(key:string,value:any,module_name:string):void
    setItemKey(key:string,value:any):void
}

class storageClass implements storageInstance{
    getStorage() {
        return JSON.parse(window.localStorage.getItem(STORAGE_KEY) || '{}')
    }
    clearModuleKye(key:string,module_name:string) {
        const val = this.getStorage()
        if (!val[module_name]) return
        delete val[module_name][key]
        return window.localStorage.setItem(STORAGE_KEY,JSON.stringify(val))
    }
    clearKey(key:string) {
        const val = this.getStorage()
        delete val[key]
        return window.localStorage.setItem(STORAGE_KEY,JSON.stringify(val))
    }
    getItemModule(key:string,module_name:string) {
        const val = this.getItemKey(module_name)
        if (val) return val[key]
        return this.getStorage()[key]
    }
    getItemKey(key:string) {
        return this.getStorage()[key]
    }
    setItemMOduleKey(key:string,value:any,module_name:string) {
            const val = this.getStorage()
            val[key] = value
            this.setItemKey(module_name,val)
    }
    setItemKey(key:string,value:any) {
        const val = this.getStorage()
        val[key] = value
        window.localStorage.setItem(STORAGE_KEY,JSON.stringify(val))
    }
}

const storage = new storageClass()
export default storage

创建storage.d.ts

import { ComponentCustomProperties } from 'vue'
import storageClass,{storageInstance} from "@/storage";

declare module '@vue/runtime-core' {
    interface ComponentCustomProperties {
        $storage: storageClass<storageInstance>
    }
}

就可以直接调用


import { createStore } from 'vuex'

export default createStore({
  state: {
    username: ''
  },
  mutations: {
    saveUserName(state,username) {
      state.username = username
    }
  },
  actions: {
    saveUserName(content,username) {
      content.commit('saveUserName',username)
    }
  },
  modules: {
  }
})

去登录页面调用

this.$store.dispatch('saveUserName',data)
export default class App extends Vue {
  mounted() {
    const a = this.$storage.getItemKey('userinfo')
    this.$store.dispatch('saveUserName',a)
    console.log(a,"dfdf")
  }
}

当然应该是网络请求回去用户信息的,如果登录过就返回用户信息,如果没有登录就返回制定状态码,跳转到登录页面,这个是放在刷新后信息丢失

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaodunmeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值