当前位置: 代码迷 >> 综合 >> 优化封装本地存储 localStorage 模块
  详细解决方案

优化封装本地存储 localStorage 模块

热度:52   发布时间:2023-11-29 12:37:05.0

为什么要封装?

        在我们项目的后续业务中的很多地方都需要操作本地存储,如果每次都像上面那样写的话比较麻烦,所以我们这里建议把操作本地存储的代码封装到一个单独的模块中进行处理。

 

封装方法

        创建 src/utils/storage.js 模块。

        在文件中封装方法并导出

/* 封装本地存储模块 */export const getItem = name => {// 获取数据const data = window.localStorage.getItem(name)try {// data 可能不是json格式的字符串 用try catch 来捕获错误// 尝试把数据转为json对象return JSON.parse(data)} catch (err) {// data不是转换错误就直接返回return data}
}export const setItem = (name, value) => {// 判断传过来的数据是不是对象 如果是对象就转为json格式的字符串if (typeof value === 'object') {value = JSON.stringify(value)}// 存入数据window.localStorage.setItem(name, value)
}export const removeItem = name => {window.localStorage.removeItem(name)
}export const clearItem = () => {window.localStorage.clearItem()
}

使用方法 

        在容器模块中加载使用:  import { xxx } from '@/utils/storage.js'

import Vue from 'vue'
import Vuex from 'vuex'
// 导入方法
import { getItem, setItem } from '@/utils/storage.js'Vue.use(Vuex)// 这样做的目的可以避免访问和获取数据的名字不一致导致的问题
const USER_KEY = 'toutiao-m-token'export default new Vuex.Store({state: {// 当前登录用户的登录状态token等数据token: getItem(USER_KEY)},mutations: {setToken (state, data) {state.token = data// 为了防止页面刷新数据丢失,我们还需要把数据放到本地存储中,这里仅仅是为了持久化数据setItem(USER_KEY, data)}},actions: {},modules: {}
})

  相关解决方案