
Vue.jsでlocalStorageを期限付きで使用
Vue.jsでlocalStorageはlocalStorage.name = 'foo'のように指定するだけで使用できる。
しかし、localStorageをCookieのように期限付きで使用したいこともある。
例えば1ヶ月は保存されるがその後は自動消去されるような使い方だ。
それにはinstallで期限付きのvue.prototype.$storageを登録してmethodsで利用する必要がある。
Vue.jsでlocalStorageを期限付きで作る方法
まずVueのinstallを使用して期限付きlocalStorageを作成する。
const localStorageLimit = {
  install(Vue) {
    Vue.prototype.$storage = {
      set(key, value, expire) {
        let data
        if (expire !== undefined) {
          data = {
            expire: expire,
            value: value
          }
        } else {
          data = value
        }
        localStorage.setItem(key, JSON.stringify(data))
      },
      get(key) {
        let s = localStorage[key]
        if (s === undefined) return
        s = JSON.parse(s)
        if (new Date(s.expire) > new Date()) {
          return s.value
        } else {
          localStorage.removeItem(key)
          return undefined
        }
      }
    }
  }
}
あとはVue.use(localStorageLimit)で読み込んでmethodsで使用するだけだ。
Vue.use(localStorageLimit)
new Vue({
  el: '#app',
  methods: {
    setLocalStorage(key, value, expire) {
      this.$storage.set(key, value, expire)
    },
    getLocalStorage(key) {
      return this.$storage.get(key)
    }
  },
  mounted() {
    const data = {
      name: 'sato',
      age: 32
    }
    this.setLocalStorage('test', data, '2050/01/01 00:00')
    console.log(this.getLocalStorage('test'))
    // => {name: "sato", age: 32}
    // consoleには表示されないが'2050/01/01 00:00'が
    // 設定されているので指定した日付以降は自動削除される。
  }
})




