最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

LocalStorage封裝一次解決方法示例

 更新時間:2022年07月04日 17:34:46   作者:Fave  
這篇文章主要為大家介紹了LocalStorage封裝一次解決的方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

1. 封裝基礎的方法

首先對于localStorage做一個基礎的封裝,封裝出 get 、set 、del 這幾個基本的方法。這一步是方便后續(xù)的調用

新建一個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封裝的資料請關注腳本之家其它相關文章!

相關文章

  • typescript type 分配條件類型示例詳解

    typescript type 分配條件類型示例詳解

    這篇文章主要為大家介紹了typescript type 分配條件類型示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • TypeScript逆變之條件推斷和泛型的應用示例詳解

    TypeScript逆變之條件推斷和泛型的應用示例詳解

    這篇文章主要為大家介紹了TypeScript逆變之條件推斷和泛型的應用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • TypeScript之Generics泛型類型學習

    TypeScript之Generics泛型類型學習

    這篇文章主要為大家介紹了TypeScript之Generics泛型類型學習,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • TypeScript十大排序算法之選擇排序實現示例詳解

    TypeScript十大排序算法之選擇排序實現示例詳解

    這篇文章主要為大家介紹了TypeScript十大排序算法之選擇排序實現示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • 基于tsup打包TypeScript實現過程

    基于tsup打包TypeScript實現過程

    這篇文章主要為大家介紹了基于tsup打包TypeScript實現過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • TypeScript?泛型接口具體使用實戰(zhàn)

    TypeScript?泛型接口具體使用實戰(zhàn)

    這篇文章主要為大家介紹了TypeScript?泛型接口具體使用實戰(zhàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • Manipulation-TypeScript?DOM操作示例解析

    Manipulation-TypeScript?DOM操作示例解析

    這篇文章主要為大家介紹了DOM?Manipulation-TypeScript?DOM操作示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • TypeScript數據結構鏈表結構?LinkedList教程及面試

    TypeScript數據結構鏈表結構?LinkedList教程及面試

    這篇文章主要為大家介紹了TypeScript數據結構鏈表結構?LinkedList教程及面試,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • PureScript與JavaScript中equality設計的使用對比分析

    PureScript與JavaScript中equality設計的使用對比分析

    這篇文章主要為大家介紹了PureScript中的equality與JavaScript中的equality設計對比分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • TypeScript開發(fā)HapiJS應用詳解

    TypeScript開發(fā)HapiJS應用詳解

    這篇文章主要為大家介紹了TypeScript開發(fā)HapiJS應用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08

最新評論

松原市| 广水市| 喀喇| 昌吉市| 台南市| 米脂县| 临潭县| 思南县| 辽中县| 新安县| 手机| 无为县| 南川市| 上思县| 沙河市| 巴里| 萨嘎县| 绥芬河市| 甘南县| 张家港市| 抚州市| 瑞金市| 新兴县| 仲巴县| 林州市| 泰宁县| 兴和县| 临沧市| 新乡市| 镶黄旗| 壤塘县| 丰城市| 牙克石市| 麟游县| 岚皋县| 察雅县| 阜阳市| 定远县| 石泉县| 临海市| 巴塘县|