Skip to content

storage用于数据本地存存储

上次更新 2024年10月11日星期五 8:56:56 字数 0 字 时长 0 分钟

js
import { ref, unref } from "vue";
import Cookies from "js-cookie";

/**
 * @description: 用于存储数据的cookie存储
 * @return {*}
 */
export const cookiesStorage = {
  /**
   * @description: 存储cookie
   * @param {*} key key作为存储的键
   * @param {*} value value作为存储的值
   * @param {*} options options作为存储的配置
   * @return {*}
   */
  set(key, value, options) {
    const data = unref(value);
    return Cookies.set(key, encodeURIComponent(JSON.stringify(data)), options);
  },
  /**
   * @description: 获取cookie
   * @param {*} key 同上
   * @return {*}
   */
  get(key) {
    return JSON.stringify({
      accessToken: Cookies.get(key),
    });
  },
  /**
   * @description: 移除cookie
   * @param {*} key 同上
   * @return {*}
   */
  remove(key) {
    Cookies.remove(key);
  },
};

/**
 * @description: 用于存储数据的storage存储
 * @param {*} storage
 * @return {*}
 */
function useCommonStorage(storage) {
  const set = (key, value) => {
    let data = unref(value);
    if (data) {
      storage.setItem(key, encodeURIComponent(JSON.stringify(data)));
    } else {
      data = JSON.parse(decodeURIComponent(storage.getItem(key)));
    }
    return data;
  };
  const remove = (key) => {
    storage.removeItem(key);
  };
  const get = (key) => JSON.parse(decodeURIComponent(storage.getItem(key)));

  return { set, remove, get };
}

export const useStorage = (storage) => useCommonStorage(storage);