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

LocalStorage封裝一次解決方法示例

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

1. 封裝基礎(chǔ)的方法

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

新建一個(gè)storage文件

const storage = {
   get(key) {
      if (!key) {
          return null
      }
      key = key.toString();
      const data = window.localStorage.getItem(key);
      return JSON.parse(data);
   },
}

get方法首先判斷key的值,再轉(zhuǎn)換成字符串進(jìn)行取值,最后再將返回的值使用JSON.parse進(jìn)行解析即可

const storage = {
  set(key, value) {
    if (!key || !value) {
          return null
      }
    key = key.toString();
    window.localStorage.setItem(key, JSON.stringify(value));
  },
}

set方法判斷不為空的情況下,將key轉(zhuǎn)換字符串,再進(jìn)行存儲(chǔ)

const storage = {
  deleteKey(key: string) {
    if (!key) {
      return;
    }
    key = key.toString();
    window.localStorage.removeItem(key);
  },
  clear() {
    window.localStorage.clear();
  }
}

del方法 和 clear方法刪除存儲(chǔ)

這一步就是對localtorage做好了一個(gè)基礎(chǔ)的封裝

2. 使用的封裝

這個(gè)時(shí)候需要先新建一個(gè)constants文件用來保存存儲(chǔ)的字段

const constants = {
  USER_INFO: 'user_info',
  USER_MESSAGE: 'user_message',
}
export default constants;

封裝一個(gè)用戶相關(guān)的存儲(chǔ)

// 引入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;

這個(gè)時(shí)候我們調(diào)用起來就會(huì)很方便了只需要在邏輯處寫上

userManage.getUserInfo()

這樣就可以直接獲取到存儲(chǔ)的用戶信息的內(nèi)容,設(shè)置刪除也可以直接調(diào)用

userManage.setUserInfo({name: 'yonghu'}) / userManage.delUserInfo();

3. 清除

場景:在用戶退出登錄的時(shí)候,有些存儲(chǔ)是需要清除,而有些存儲(chǔ)是不需要清除的。

方案:新建一個(gè)longStorageKeys文件,在constants基礎(chǔ)之上長久保存內(nèi)容

import constants from "./constants";
const longStorageKeys = {
  USER_INFO: constants.USER_INFO,
}
export default longStorageKeys;

清除的封裝

import storage from "./stroage";
import longStorageKeys from "./longStorageKeys";
class clearStorageManage {
  // 清除所有的存儲(chǔ)
  static clearLocalStorage() {
    storage.clear();
  }
  // 清除部分存儲(chǔ)
  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;

方法調(diào)用

clearStorageManage.clearLocalStorage()

可以擴(kuò)展其他的清除,比如切換用戶之后哪些需要/不需要的

總結(jié)

封裝之后的結(jié)構(gòu)

這樣封裝的好處

  • 調(diào)用起來方便,不會(huì)像沒有封裝之前笨重
  • 管理起來簡單,對于存儲(chǔ)的東西一目了然
  • 可以自定義解決一些問題,比如如果同一域名下項(xiàng)目使用同一字段導(dǎo)致的沖突,可以直接在storage封裝的get與set方法中添加項(xiàng)目的標(biāo)識(shí)

以上就是LocalStorage封裝一次解決的詳細(xì)內(nèi)容,更多關(guān)于LocalStorage封裝的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

莲花县| 岑巩县| 凤山县| 泽普县| 泰兴市| 馆陶县| 赤城县| 广河县| 巩留县| 平塘县| 许昌市| 浑源县| 黄平县| 奉化市| 青海省| 华宁县| 阳江市| 界首市| 平安县| 柘城县| 阳高县| 天镇县| 靖西县| 穆棱市| 比如县| 安阳县| 宁强县| 绩溪县| 昌江| 防城港市| 东山县| 碌曲县| 如皋市| 内乡县| 永德县| 民县| 剑川县| 安庆市| 呈贡县| 盖州市| 十堰市|