当前位置: 首页 > wzjs >正文

摄影网站公司聚通装潢上海各门店地址电话

摄影网站公司,聚通装潢上海各门店地址电话,全国物流平台货找车,网站的flash在 Vue 3 中实现本地存储(如用户配置数据),主要通过浏览器提供的 localStorage 或 sessionStorage API。以下是详细实现方案: 基础实现(原生 API) javascript 复制 下载 // 存储数据 localStorage.set…

在 Vue 3 中实现本地存储(如用户配置数据),主要通过浏览器提供的 localStorage 或 sessionStorage API。以下是详细实现方案:

基础实现(原生 API)

javascript

复制

下载

// 存储数据
localStorage.setItem('userSettings', JSON.stringify({ theme: 'dark', fontSize: 16 }));// 读取数据
const settings = JSON.parse(localStorage.getItem('userSettings')) || {};// 删除数据
localStorage.removeItem('userSettings');

推荐方案:封装响应式存储工具

在 /src/composables/useLocalStorage.js 中创建可复用逻辑:

javascript

复制

下载

import { ref, watchEffect } from 'vue';export default function useLocalStorage(key, defaultValue) {// 创建响应式引用const storedValue = ref(JSON.parse(localStorage.getItem(key)) || defaultValue);// 监听变化并存储watchEffect(() => {localStorage.setItem(key, JSON.stringify(storedValue.value));});// 提供清除方法const clearStorage = () => {localStorage.removeItem(key);storedValue.value = defaultValue;};return [storedValue, clearStorage];
}

在组件中使用

vue

复制

下载

<script setup>
import { computed } from 'vue';
import useLocalStorage from '@/composables/useLocalStorage';// 使用存储钩子(带默认值)
const [userSettings, clearSettings] = useLocalStorage('userConfig', {theme: 'light',fontSize: 14,notifications: true
});// 修改配置
const toggleTheme = () => {userSettings.value.theme = userSettings.value.theme === 'light' ? 'dark' : 'light';
};// 计算属性示例
const themeClass = computed(() => `theme-${userSettings.value.theme}`);
</script><template><div :class="themeClass"><button @click="toggleTheme">切换主题</button><button @click="clearSettings">重置配置</button><input type="range" min="12" max="24"v-model.number="userSettings.fontSize"></div>
</template>

高级技巧

  1. 存储加密(敏感数据):

    javascript

    复制

    下载

    import CryptoJS from 'crypto-js';const SECRET_KEY = import.meta.env.VITE_STORAGE_SECRET;// 加密存储
    const encryptedData = CryptoJS.AES.encrypt(JSON.stringify(data),SECRET_KEY
    ).toString();// 解密读取
    const bytes = CryptoJS.AES.decrypt(storedData, SECRET_KEY);
    const originalData = JSON.parse(bytes.toString(CryptoJS.enc.Utf8));
  2. 类型安全存取

    javascript

    复制

    下载

    // 增强版存储方法
    const typedStorage = {get(key, type = 'string') {const value = localStorage.getItem(key);if (value === null) return null;try {return {'number': Number(value),'boolean': value === 'true','object': JSON.parse(value),'array': JSON.parse(value)}[type] || value;} catch {return value;}},set(key, value) {const type = typeof value;const toStore = ['object', 'array'].includes(type) ? JSON.stringify(value) : value;localStorage.setItem(key, toStore);}
    };

注意事项

  1. 存储限制

    • 单个域名存储上限通常为 5MB

    • 单个键值对建议不超过 2MB

  2. 最佳实践

    javascript

    复制

    下载

    // 1. 添加存储版本控制
    const STORAGE_VERSION = 'v1';
    const storageKey = `${STORAGE_VERSION}_userConfig`;// 2. 添加存储错误处理
    try {localStorage.setItem(key, data);
    } catch (e) {console.error('存储失败:', e);// 降级方案:使用 sessionStorage 或内存存储
    }// 3. 监听跨标签页更新
    window.addEventListener('storage', (event) => {if (event.key === storageKey) {// 更新本地数据userSettings.value = JSON.parse(event.newValue);}
    });
  3. 替代方案选择

    方案特点适用场景
    localStorage永久存储用户配置、长期数据
    sessionStorage标签页关闭即清除临时表单数据
    IndexedDB大容量存储 (250MB+)离线应用、大型数据
    Cookies自动携带到请求头身份认证

完整示例(TypeScript 版)

typescript

复制

下载

// useLocalStorage.ts
import { ref, watch, Ref } from 'vue';type StorageValue<T> = Ref<T>;export default function useLocalStorage<T>(key: string, defaultValue: T
): [StorageValue<T>, () => void] {const storedValue = ref(defaultValue) as StorageValue<T>;// 初始化读取try {const item = localStorage.getItem(key);if (item !== null) {storedValue.value = JSON.parse(item);}} catch (error) {console.error(`读取 ${key} 失败:`, error);}// 监听变化watch(storedValue, (newVal) => {try {localStorage.setItem(key, JSON.stringify(newVal));} catch (error) {console.error(`存储 ${key} 失败:`, error);}}, { deep: true });const clear = () => {localStorage.removeItem(key);storedValue.value = defaultValue;};return [storedValue, clear];
}

通过这种方式,您可以:

  • 创建响应式的持久化存储

  • 自动同步 localStorage 变化

  • 支持复杂对象存储

  • 提供类型安全(TypeScript)

  • 处理存储异常情况


文章转载自:

http://5EoFL4qA.nnwpz.cn
http://na82TB59.nnwpz.cn
http://kEicMkt5.nnwpz.cn
http://f7jKhky4.nnwpz.cn
http://NuYwznpC.nnwpz.cn
http://dhindtpA.nnwpz.cn
http://j3QfApd1.nnwpz.cn
http://6qwhDvwe.nnwpz.cn
http://L0u8KN8y.nnwpz.cn
http://mnlNrTox.nnwpz.cn
http://XQTMtDgs.nnwpz.cn
http://auiqg5f2.nnwpz.cn
http://JMi91vCj.nnwpz.cn
http://hgLZt1mc.nnwpz.cn
http://SrNNQPBp.nnwpz.cn
http://ji0RKPDS.nnwpz.cn
http://8JbIDJBS.nnwpz.cn
http://YFMoSnLD.nnwpz.cn
http://mloQU31Z.nnwpz.cn
http://EQCpDsqV.nnwpz.cn
http://mQGqVwne.nnwpz.cn
http://4FFthPX4.nnwpz.cn
http://P2BSNUOS.nnwpz.cn
http://3LNawiWW.nnwpz.cn
http://3de8fMGj.nnwpz.cn
http://x0DNee1r.nnwpz.cn
http://b5WHbh5r.nnwpz.cn
http://2vPnn2AZ.nnwpz.cn
http://9Li3vLhQ.nnwpz.cn
http://GqIy5KRi.nnwpz.cn
http://www.dtcms.com/wzjs/648804.html

相关文章:

  • 酒店预订网站开发有哪些网站用mysql
  • 网站制作实验报告阿里云部署一个自己做的网站吗
  • 工会网站群建设设计参考图哪个网站好
  • wordpress网站布置广州网站优化快速提升网站排名
  • 在线购物网站建设流程个体户广告公司名字
  • 万网网站首页株洲在线论坛
  • 如何说服客户做网站网站开发手机模拟器
  • seo查询网站自己建站流程
  • 搞个竞拍网站怎么做网站建设得缺点
  • 求网页设计与网站建设方正隶变简体可以做网站用么
  • 科讯cms网站管理系统kesioncms注册送38元的游戏网站
  • 哪个专业是学网站开发的关于旅游网站建设的方案
  • 二手交易网站建设方案wordpress代码实现下载
  • 好公司的网站设计最新网站开发工具
  • 精诚时代 网站谁做的河南优化网站
  • 建设ca网站手机购物app排行榜前十名
  • 望京 网站建设wordpress用户密码 破解
  • 建设网站东莞公司上海网站建设seo推广
  • 黄岛王台有做网站的吗网页制作如何设置网页背景
  • 分类信息网站建设房屋设计软件免费版
  • 书法网站模版深圳做网站的地方
  • 网站 建设 公司加快建设乡镇招商网站
  • 德州网站建设招聘几度设计网站
  • 企业网站最下面的那栏叫啥厦门建网站网址
  • 大连企业建设网站南昌专业的学校网站建设公司
  • 建设网站是什么意思成都网站建设多少费用
  • 江苏网站建设包括哪些域名注册是什么意思
  • 城阳网站建设公司电话网站首页title
  • 新野网站建设石家庄
  • 网站建设 调研报告网络建设公司名称