封装localStorage本地存储的方法

一、封装localStorage本地存储的方法

  • 场景:试卷从后台动态获取,在页面刷新或者不小心退出页面,需要保存这些题目的答案以及状态可以用到localStorage方法

image-20220926161456588

1.封装方法
  • localStorage.js
var storage = {
 
    set(key, value){
        localStorage.setItem(key,JSON.stringify(value));
    },
    get(key){
        return JSON.parse(localStorage.getItem(key));
    },
    remove(key){
        localStorage.removeItem(key);
    }
    
}
 
export default storage;

image-20220926162749443

这个方法比较简陋,用下面这个功能较为完整的

var storage = {
  set(key, value) {
    if (typeof value === "object") {
      value = JSON.stringify(value);
    }
    localStorage.setItem(key, value);
  },
  get(key) {
    const data = localStorage.getItem(key);
    try {
      return JSON.parse(data);
    } catch (err) {
      return data;
    }
  },
  remove(key) {
    localStorage.removeItem(key);
  },
};

export default storage;
2.在需要的页面引入并使用
  • storage.set('answerItems',this.answer.answerItems) 前面是需要更新的键名,后面是需要更新键名的值

    • 写一个method方法:

      readUpdateVal() {
            storage.set("answerItems", this.answer.answerItems);
          },
      

注意:

  1. 由于题目内容是从子组件里面动态获取的,在页面刷新的时候,题目就会更新
  2. 想要页面刷新获取题目,将题目的最新状态保存下来,那么方法就应该写在子组件里面
🔎父组件
  • 子组件标签如下:

image-20220926163431211

  • 方法写在子组件标签里面:

image-20220926165012631

3.子组件向父组件传值
  • this.$emit('事件',参数) 用于当子组件需要调用父组件的方法的场景下.
  • 父组件的题目从子组件里面获取,但是页面刷新是要将 父组件内部 更新的方法动态传递到子组件中并更新,这样才可以确保题目状态是最新
🔎子组件

image-20220926165819960

create里面做一个判断

image-20220927103024883

写好后可以删除本地存储做一个验证

image-20220927103252912

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
封装localstorage,使其支持设置过期时间可以通过以下步骤实现: 1. 创建一个自定义的封装函数,例如setLocalStorageWithExpire(key, value, expire),该函数接受三个参数:key表示存储的键名,value表示存储的值,expire表示过期时间。 2. 在该函数内部,首先计算存储数据的过期时间,可以使用Date对象的getTime()方法获取当前时间的时间戳,然后根据过期时间计算出具体的过期时间戳。 3. 接下来使用localStorage.setItem()方法将键值对存储到本地存储中,可以使用JSON对象的方法将value转换为字符串再进行存储。 4. 在存储键值对的同时,还需要将过期时间存储起来,可以使用localStorage.setItem()方法将过期时间戳存储到另一个键名中,例如expire_key,作为过期时间的标志。 5. 在需要获取存储数据时,创建一个新的函数getLocalStorageWithExpire(key),该函数接受一个参数key表示需要获取的键名。 6. 在该函数内部,首先使用localStorage.getItem()方法获取键值对的值,然后使用JSON对象的parse()方法将字符串转换为对象格式,得到存储的值。 7. 紧接着,使用localStorage.getItem()方法获取过期时间的时间戳,然后与当前时间戳进行比较,若过期时间大于当前时间,则说明数据还未过期,返回存储的值。 8. 如果过期时间小于等于当前时间,则说明数据已过期,可以使用localStorage.removeItem()方法将键值对和过期时间从本地存储中移除。 通过以上步骤,我们可以对localStorage进行封装,使其支持设置过期时间,方便在存储数据时加入过期时间的管理,从而实现更加灵活和可控的本地存储机制。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值