localStorage本地存储设置有效期的简单方法

在实际开发中,经常遇到需要存储数据的情况,通常我们会选择localStorage进行存储,但是localStorage的存储是永久的,而很多时候我们需要将存储的数据设置一个有效期,下面是自行设置有效期的具体实现:

<template>
  <div>
    <el-form label-width="80px" :model="form">
      <el-form-item label="名称">
        <el-input v-model="form.name" />
      </el-form-item>
      <el-form-item label="活动区域">
        <el-input v-model="form.region" />
      </el-form-item>
      <el-form-item label="活动形式">
        <el-input v-model="form.type" />
      </el-form-item>
    </el-form>
  </div>
</template>
<script>
export default {
  name: 'Test',
  data() {
    return {
      form: {}
    }
  },
  watch: {
    // 这里监听对象属性值的改变需要用深度监听,否则无法监听到对象属性值的变化
    form: {
      handler(newVal) {
        if (newVal) {
          // 存储数据
          this.setItem('formData', newVal, new Date().getTime() + 10000)
        }
      },
      deep: true
    }
  },
  created() {
    // 页面初始化获取存储数据
    this.form = this.getItem('formData')
  },
  methods: {
    // 设置缓存方法,可提取为公共方法
    setItem(key, value, expires) {
      const obj = {
        value, // 需要缓存的数据
        expires // 缓存有效期,毫秒为单位
      }
      localStorage.setItem(key, JSON.stringify(obj))
    },
    // 获取缓存方法,可提取为公共方法
    getItem(key) {
      const value = localStorage.getItem(key)
      if (!value) return {}
      const obj = JSON.parse(value)
      if (obj['expires'] && new Date().getTime() > obj['expires']) {
        // 如果设置了有效期,且已过期,直接清楚
        localStorage.removeItem(key)
        return {}
      }
      // 未设置有效期或设置了有效期但没有过期,直接将存储的数据返回
      return obj.value
    }
  }
}
</script>

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Vue中,可以使用localStorage来进行本地存储localStorage是浏览器提供的一种存储数据的机制,可以将数据存储在浏览器中而不会随着页面的刷新或关闭而丢失。localStorage的使用方法与sessionStorage基本一致,只需将localStorage替换为sessionStorage即可。localStorage具有永久有效的特点,一般浏览器可以存储大约5MB左右的数据。而sessionStorage的有效期是浏览器的会话时间,即标签页关闭后数据就会消失。localStorage的作用域是协议、主机名和端口,而sessionStorage的作用域是窗口、协议、主机名和端口。所以在Vue中,可以直接使用localStorage来进行本地存储,不需要写this.localStorage。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【Vue】本地存储(LocalStorage)和会话存储(SessionStorage)](https://blog.csdn.net/m0_59792745/article/details/124512519)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [vue中使用localStorage存储信息](https://blog.csdn.net/weixin_44255044/article/details/114666488)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值