LocalStorage封裝一次解決方法示例
1. 封裝基礎的方法
首先對於localStorage做一個基礎的封裝,封裝出 get 、set 、del 這幾個基本的方法。這一步是方便後續的調用
新建一個storage文件
const storage = { get(key) { if (!key) { return null } key = key.toString(); const data = window.localStorage.getItem(key); return JSON.parse(data); }, }
get方法
首先判斷key的值,再轉換成字符串進行取值,最後再將返回的值使用JSON.parse進行解析即可
const storage = { set(key, value) { if (!key || !value) { return null } key = key.toString(); window.localStorage.setItem(key, JSON.stringify(value)); }, }
set方法
判斷不為空的情況下,將key轉換字符串,再進行存儲
const storage = { deleteKey(key: string) { if (!key) { return; } key = key.toString(); window.localStorage.removeItem(key); }, clear() { window.localStorage.clear(); } }
del方法 和 clear方法刪除存儲
這一步就是對localtorage做好瞭一個基礎的封裝
2. 使用的封裝
這個時候需要先新建一個constants
文件用來保存存儲的字段
const constants = { USER_INFO: 'user_info', USER_MESSAGE: 'user_message', } export default constants;
封裝一個用戶相關的存儲
// 引入storage 和 constants import storage from "../stroage"; import constants from "../constants"; class userManage { static readonly USER_INFO = constants.USER_INFO // 暴露的獲取用戶信息的方法 static getUserInfo() { return storage.get(userManage.USER_INFO); } static setUserInfo(value: unknown) { storage.set(userManage.USER_INFO, value); } static delUserInfo() { storage.deleteKey(userManage.USER_INFO); } } export default userManage;
這個時候我們調用起來就會很方便瞭隻需要在邏輯處寫上
userManage.getUserInfo()
這樣就可以直接獲取到存儲的用戶信息的內容,設置刪除也可以直接調用
userManage.setUserInfo({name: 'yonghu'}) / userManage.delUserInfo();
3. 清除
場景:在用戶退出登錄的時候,有些存儲是需要清除,而有些存儲是不需要清除的。
方案:新建一個longStorageKeys文件,在constants基礎之上長久保存內容
import constants from "./constants"; const longStorageKeys = { USER_INFO: constants.USER_INFO, } export default longStorageKeys;
清除的封裝
import storage from "./stroage"; import longStorageKeys from "./longStorageKeys"; class clearStorageManage { // 清除所有的存儲 static clearLocalStorage() { storage.clear(); } // 清除部分存儲 static incompletionClear() { let long_keys = Object.values(longStorageKeys); let local_keys = Object.values(window.localStorage); local_keys.map(key => { if (!long_keys.includes(key)) { window.localStorage.removeItem(key); } }); return; } } export default clearStorageManage;
方法調用
clearStorageManage.clearLocalStorage()
可以擴展其他的清除,比如切換用戶之後哪些需要/不需要的
總結
封裝之後的結構
這樣封裝的好處
- 調用起來方便,不會像沒有封裝之前笨重
- 管理起來簡單,對於存儲的東西一目瞭然
- 可以自定義解決一些問題,比如如果同一域名下項目使用同一字段導致的沖突,可以直接在storage封裝的get與set方法中添加項目的標識
以上就是LocalStorage封裝一次解決的詳細內容,更多關於LocalStorage封裝的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- 前端項目中監聽localStorage的變化
- JS項目中對本地存儲進行二次的封裝的實現
- Vue的緩存方法示例詳解
- JS 中Json字符串+Cookie+localstorage
- localStorage過期時間設置的幾種方法