程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 后端开发

  • 前端开发

    • 照片上传组件
    • localStorage工具类
      • localStorage工具类
      • 在 Vue 中使用
    • sessionStorage工具类
    • 对话框组件
    • 消息提示工具类
    • 按钮组件
    • 前端文件上传
    • 前端文件下载
    • 前端数据一致性
    • 后台管理系统组件
  • 开发笔记
  • 前端开发
scholar
2024-12-27
目录

localStorage工具类

# localStorage工具类

// src/utils/localStorageUtil.js

/**
 * localStorage工具类封装
 * 提供对localStorage的通用操作,包括存储、读取、删除和清空数据。
 */
const localStorageUtil = {
  /**
   * 设置localStorage中的键值对
   * 支持存储对象,内部会将对象转换为JSON字符串进行存储
   * 
   * @param {string} key - 存储的键名
   * @param {*} value - 存储的值,可以是任何类型
   */
  setItem(key, value) {
    try {
      // 将value转化为JSON字符串进行存储
      const jsonValue = JSON.stringify(value);
      localStorage.setItem(key, jsonValue);
    } catch (error) {
      console.error(`设置localStorage时发生错误: ${error}`);
    }
  },

  /**
   * 从localStorage中获取数据
   * 如果数据是JSON格式,会将其解析为对象或数组返回
   * 
   * @param {string} key - 要获取的键名
   * @returns {*} - 返回存储的值,如果键不存在则返回null
   */
  getItem(key) {
    try {
      // 从localStorage中获取数据
      const item = localStorage.getItem(key);
      // 如果存储的是JSON格式,将其解析为对象/数组
      return item ? JSON.parse(item) : null;
    } catch (error) {
      console.error(`读取localStorage时发生错误: ${error}`);
      return null;
    }
  },

  /**
   * 从localStorage中删除指定的键值对
   * 
   * @param {string} key - 要删除的键名
   */
  removeItem(key) {
    try {
      localStorage.removeItem(key);
    } catch (error) {
      console.error(`删除localStorage中的键时发生错误: ${error}`);
    }
  },

  /**
   * 清空localStorage中的所有数据
   */
  clear() {
    try {
      localStorage.clear();
    } catch (error) {
      console.error(`清空localStorage时发生错误: ${error}`);
    }
  },

  /**
   * 检查localStorage中是否存在指定的键
   * 
   * @param {string} key - 要检查的键名
   * @returns {boolean} - 如果键存在则返回true,否则返回false
   */
  hasKey(key) {
    return localStorage.getItem(key) !== null;
  },

  /**
   * 获取localStorage中存储的所有键名
   * 
   * @returns {Array<string>} - 返回包含所有键名的数组
   */
  getAllKeys() {
    try {
      const keys = [];
      for (let i = 0; i < localStorage.length; i++) {
        keys.push(localStorage.key(i));
      }
      return keys;
    } catch (error) {
      console.error(`获取localStorage键名时发生错误: ${error}`);
      return [];
    }
  },
};

export default localStorageUtil;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97

说明:

  1. setItem:用于将数据存储到 localStorage 中。它支持任意数据类型,若数据为对象或数组,会自动转换为 JSON 字符串存储。
  2. getItem:从 localStorage 中读取数据,并会尝试将 JSON 格式的数据解析为对象或数组返回。
  3. removeItem:删除指定键的数据。
  4. clear:清空 localStorage 中的所有数据。
  5. hasKey:检查某个键是否存在于 localStorage 中。
  6. getAllKeys:获取 localStorage 中存储的所有键名。

# 在 Vue 中使用

你可以在 Vue 项目中的任何组件或服务中导入并使用这个工具类:

// 示例:在 Vue 组件中使用
import localStorageUtil from '@/utils/localStorageUtil';

export default {
  name: 'ExampleComponent',
  mounted() {
    // 设置localStorage
    localStorageUtil.setItem('user', { name: 'John', age: 30 });

    // 获取localStorage数据
    const user = localStorageUtil.getItem('user');
    console.log(user); // 输出:{ name: 'John', age: 30 }

    // 检查是否存在某个键
    const hasUser = localStorageUtil.hasKey('user');
    console.log(hasUser); // 输出:true

    // 删除数据
    localStorageUtil.removeItem('user');

    // 清空localStorage
    localStorageUtil.clear();
  }
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
编辑此页 (opens new window)
上次更新: 2025/03/16, 22:19:39
照片上传组件
sessionStorage工具类

← 照片上传组件 sessionStorage工具类→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式