封装localStorage过期时间

276 阅读1分钟

1.png

场景:缓存的数据需要定时清除

最近项目上有一个需求就是用户的登录信息用localStorage缓存,但是又要定期删除缓存的信息,localStorage本身是没有清除方法的,除非主动清除,信息是不会消失的,所以封装localStorage,重写了set,get方法。仅供参考。

storage.js
 class Storage {
            constructor() {
                this.expires = 1000 * 5   //默认过期时间
            }
            
            set(key, value, expires) {
                let storages = {}
                storages[key] = {
                    value:value,
                    expires:expires === undefined? (new Date().getTime() + this.expires):(expires * 1000+new Date().getTime())
                }
                localStorage.setItem(key,JSON.stringify(storages))
            }
            
            get(key) {
                const storages = JSON.parse(localStorage.getItem(key))
                if(!storages){   //如果不存在
                    return null
                }
                if(new Date().getTime() > storages[key].expires){     //存在但过期
                    this.remove(key)
                    return null
                }
                return storages[key].value
            }
            
            remove(key) {
                localStorage.removeItem(key)
            }
        }
export default new Storage();
使用
import storage from './js/storage.js'
var storage = new Storage()
console.log(storage);
storage.set('wang',222,20)

image.png