亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

LocalStorage封裝一次解決方法示例

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

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

首先對(duì)于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ǔ)

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

2. 使用的封裝

這個(gè)時(shí)候需要先新建一個(gè)constants文件用來(lái)保存存儲(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)用起來(lái)就會(huì)很方便了只需要在邏輯處寫上

userManage.getUserInfo()

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

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

3. 清除

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

方案:新建一個(gè)longStorageKeys文件,在constants基礎(chǔ)之上長(zhǎng)久保存內(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)用起來(lái)方便,不會(huì)像沒(méi)有封裝之前笨重
  • 管理起來(lái)簡(jiǎn)單,對(duì)于存儲(chǔ)的東西一目了然
  • 可以自定義解決一些問(wèn)題,比如如果同一域名下項(xiàng)目使用同一字段導(dǎo)致的沖突,可以直接在storage封裝的get與set方法中添加項(xiàng)目的標(biāo)識(shí)

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

相關(guān)文章

  • TypeScript Module Resolution解析過(guò)程

    TypeScript Module Resolution解析過(guò)程

    這篇文章主要為大家介紹了TypeScript Module Resolution解析過(guò)程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • postman數(shù)據(jù)加解密實(shí)現(xiàn)APP登入接口模擬請(qǐng)求

    postman數(shù)據(jù)加解密實(shí)現(xiàn)APP登入接口模擬請(qǐng)求

    對(duì)于Postman的使用,一般情況下只要發(fā)發(fā)確定的請(qǐng)求與參數(shù)就可以的了,然而,在使用的時(shí)候,尤其是接口測(cè)試時(shí),請(qǐng)求接口的設(shè)計(jì)里面都有數(shù)據(jù)加密,參數(shù)驗(yàn)簽,返回?cái)?shù)據(jù)也有進(jìn)行加密的,這個(gè)時(shí)候就需要使用一些腳本做處理,模擬app登入請(qǐng)求的操作
    2021-08-08
  • Typescript?extends?關(guān)鍵字繼承類型約束及條件類型判斷實(shí)現(xiàn)示例解析

    Typescript?extends?關(guān)鍵字繼承類型約束及條件類型判斷實(shí)現(xiàn)示例解析

    這篇文章主要介紹了Typescript?extends?關(guān)鍵字繼承類型約束及條件類型判斷實(shí)現(xiàn)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • TypeScript類型級(jí)別和值級(jí)別示例詳解

    TypeScript類型級(jí)別和值級(jí)別示例詳解

    這篇文章主要為大家介紹了TypeScript類型級(jí)別和值級(jí)別示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Typescript tsconfig.json的配置詳情

    Typescript tsconfig.json的配置詳情

    這篇文章主要為大家介紹了Typescript tsconfig.json的配置詳情示例 ,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • js 獲取今天以及過(guò)去日期

    js 獲取今天以及過(guò)去日期

    這篇文章主要介紹了js獲得當(dāng)前系統(tǒng)日期時(shí)間以及過(guò)去系統(tǒng)日期時(shí)間的方法,涉及javascript操作日期時(shí)間的相關(guān)技巧,示例代碼如下,需要的朋友可以參考下
    2017-04-04
  • TypeScript防抖節(jié)流函數(shù)示例詳解

    TypeScript防抖節(jié)流函數(shù)示例詳解

    這篇文章主要為大家介紹了TypeScript防抖節(jié)流函數(shù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Typescript是必須要學(xué)習(xí)嗎?如何學(xué)習(xí)TS全棧開(kāi)發(fā)

    Typescript是必須要學(xué)習(xí)嗎?如何學(xué)習(xí)TS全棧開(kāi)發(fā)

    Typescript目前在前端,網(wǎng)站,小程序中的位置基本無(wú)可替代,同時(shí)也可以構(gòu)建完美的CLI應(yīng)用。在移動(dòng),桌面,后端方面,性能不是要求很高的情況下完全可以勝任,并且在區(qū)塊鏈,嵌入式,人工智能方面也開(kāi)始茁壯成長(zhǎng)。
    2022-12-12
  • TypeScript?類型級(jí)別示例介紹

    TypeScript?類型級(jí)別示例介紹

    這篇文章主要為大家介紹了TypeScript?類型級(jí)別示例介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • typescript在vue中的入門案例代碼demo

    typescript在vue中的入門案例代碼demo

    這篇文章主要介紹了typescript在vue中的入門案例代碼demo,使用技術(shù)棧vue2+typescript+scss入門練手項(xiàng)目,天氣預(yù)報(bào)demo,需要的朋友可以參考下。
    2022-12-12

最新評(píng)論