Vue: localStorage封装


App.vue





localStorage.ts

const namespace: string = 'zax'

export function setItem(key: string, value: any) {
  console.log(key, value)
  let storage = window.localStorage.getItem(namespace)

  if (! storage) {
    storage = {}
  } else {
    storage = JSON.parse(storage) || {}
  }

  storage[key] = value
  window.localStorage.setItem(namespace, JSON.stringify(storage))
}

export function getItem(key: string, defaultValue: any) {
  let storage = window.localStorage.getItem(namespace)
  if (! storage) {
    storage = {key: defaultValue}
    window.localStorage.setItem(namespace, JSON.stringify(storage))
    return defaultValue
  }

  storage = JSON.parse(storage)

  return storage[key]

}
vue