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

Vue3中实现全局双向绑定变量

        在Vue3项目中,状态管理是一个核心话题。虽然Pinia已经成为官方推荐的状态管理库,但在某些场景下,我们可能需要更轻量级的解决方案。本文将分享一种基于Vue3 Composition API和localStorage的手写状态管理持久化方案,这种实现方式适合中小型项目,特别是当你需要简单的全局状态管理而不想引入额外依赖时。

  • 无需额外安装状态管理库
  • 代码量少,实现简单
  • 直接操作对象属性,无需mutations/actions
  • 自动响应式更新
  • 内置localStorage持久化
// src/stores/globalValue.js
import { reactive } from 'vue';
// 定义默认状态
const defaultValue = {mainTitle: '默认标题',
};// 从localStorage中获取存储的数据,如果不存在则使用默认值
const getStoredValue = () => {try {const stored = localStorage.getItem('globalValue');return stored ? JSON.parse(stored) : {};} catch (e) {console.warn('globalValue获取localStorage数据失败', e);return {};}
};// 合并默认状态和存储的状态
const initialValue = { ...defaultValue, ...getStoredValue() };export const globalValue = reactive(initialValue);// 定义不需要持久化的属性
const nonPersistentProperties = [];
// 监听globalValue的变化并保存到localStorage
const saveValue = () => {try {// 过滤掉不需要持久化的属性const ValueToSave = { ...globalValue };nonPersistentProperties.forEach(prop => {delete ValueToSave[prop];});localStorage.setItem('globalValue', JSON.stringify(ValueToSave));} catch (e) {console.warn('globalValue保存到localStorage失败', e);}
};
// 页面卸载前保存状态
window.addEventListener('beforeunload', saveValue);
// 引入方式
import { globalValue } from "@/components/globalValue.js";
// 事件里面变量赋值
globalValue.mainTitle = '默认主题';
// 使用全局变量,动态更新
<div class="mainTitle">{{ globalValue.mainTitle }}</div>

http://www.dtcms.com/a/465915.html

相关文章:

  • C语言数据结构-排序
  • 【三维重建-对极几何】极线约束(Epipolar Constraint)
  • LeetCode算法日记 - Day 68: 猜数字大小II、矩阵中的最长递增路径
  • WSL 安装与卸载
  • app和微网站的对比河源网站建设
  • 新乡网站建设哪家好备案 网站名称
  • 版本控制器 git(5)--- git 标签管理
  • BShare HTTPS 集成与排查实战,从 SDK 接入到 iOS 真机调试(bshare https、签名、回调、抓包)
  • 基于同步压缩连续小波变换(SS-CWT)的微震图像去噪与起始检测
  • 太原网站建设工作室wordpress的内链插件
  • 简述网站开发流程 旅游做网站送邮箱
  • 湖北省住房建设厅网站网站备案登记查询系统
  • uri: mongodb://jack:123456@localhost://27017 数据库访问其他的写法
  • 在K8s中,seaweedFS 和 Longhorn 的比较
  • 146、【OS】【Nuttx】【周边】效果呈现方案解析:特殊变量$
  • 实现流水灯
  • 培 网站建设方案 doc台州seo网站推广
  • vue前端面试题——记录一次面试当中遇到的题(3)
  • Vuex的工作流程
  • 学习笔记:Vue Router 动态路由与参数匹配详解
  • seo怎样新建网站wordpress 底部模板
  • 高性能场景推荐使用PostgreSQL
  • 用一颗MCU跑通7B大模型:RISC-V+SRAM极致量化实战
  • 前端开发框架全景解析:从演进到实践与未来趋势
  • 葫芦岛做网站百度经验发布平台
  • 做网站找合作伙伴南昌网站建设精英
  • (二)deepseek控制机械臂-机械臂提示词设置测试
  • Blender概念抽象有机体模型资产生成器预设 Organic Generator V1.0附使用教程
  • Go语言实战:高并发服务器设计与实现
  • 数字化转型:概念性名词浅谈(第七十讲)