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

uniapp 使用 pinia 状态持久化

1.创建文件

stores
-index.js
-global.js

2.对应文件内容 index.js
安装插件 npm i pinia-plugin-persistedstate

import { createPinia } from 'pinia';
import persist from 'pinia-plugin-persistedstate';
const pinia = createPinia();
pinia.use(persist);
export default pinia;

3.对应文件内容 global.js

import { defineStore } from 'pinia';
import { ref,reactive } from "vue";

export const useGlobalStore = defineStore('global', () => {
  const tabBarStatus = ref('1');
  const system = ref({})
  
  const changeTabBarStatus = (status) => {
    tabBarStatus.value = status; // 示例:改变 tabBarStatus 的值
  };
  const setSystem=(options)=>{
	  system.value=options;
  }
  const getSystem=()=>{
	  return system.value;
  }
  return { 
    tabBarStatus, 
	system,
    changeTabBarStatus,
	setSystem,
	getSystem
  };
},
{
	// 网页端配置
	// persisit:true,
	// 小程序端  修改其设置 获取方法
	persist:{
		storage:{
			getItem(key){
				return uni.getStorageSync(key);
			},
			setItem(key,value){
				uni.setStorageSync(key,value);
			}
		}
	}
	
});

4.注册到main.js中

import App from './App'
// #ifndef VUE3
import Vue from 'vue'
import './uni.promisify.adaptor'
Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({
  ...App
})
app.$mount()
// #endif

// #ifdef VUE3
import { createSSRApp } from 'vue'
import pinia from '@/stores/index'
export function createApp() {
  const app = createSSRApp(App)
  app.use(pinia);
  return {
    app
  }
}
// #endif

如果想在utils 下的工具中使用可以使用一下写法

import pinia from '@/stores/index.js'
import { useGlobalStore } from "@/stores/global";
const globalStore = useGlobalStore(pinia)
export default {
	getUploadImageDomainName(){
		return  globalStore.system.img_host;
	}
}

http://www.kler.cn/a/501542.html

相关文章:

  • Leetcode - 周赛431
  • 【大厂面试AI算法题中的知识点】方向涉及:ML/DL/CV/NLP/大数据...本篇介绍为什么self-attention可以堆叠多层,这有什么作用?
  • Postgres对外提供服务流程
  • 【TI毫米波雷达】DCA1000不使用mmWave Studio的数据采集方法,以及自动化实时数据采集
  • 国产3D CAD将逐步取代国外软件
  • Julia语言的数据结构
  • 无人机侦察:雷达系统概述!
  • 51单片机入门基础
  • Linux:进程控制
  • 机器人技术:ModbusTCP转CCLINKIE网关应用
  • 【MySQL】MySQL基本执行顺序
  • 51c自动驾驶~合集46
  • 013:深度学习之神经网络
  • 网络安全建设方案,信息安全风险评估报告,信息安全检测文档(Word原件完整版)
  • vue事件对象$event
  • 计算机网络之---网络安全的基本概念
  • C#,图论与图算法,有向图(Direct Graph)广度优先遍历(BFS,Breadth First Search)算法与源程序
  • Vue3初学之组件通信
  • 设计模式(5)——观察者模式
  • linux-rsyncd服务配置
  • 【杂谈】-50+个生成式人工智能面试问题(四)
  • OceanBase4.0 跟我学--分布式到底可靠不可靠,到底丢不丢数--终于学完了
  • Win11登录微软账户“哎呀出错了”解决方案
  • 【后端面试总结】ES和MySQL对比技术探讨
  • MySQL教程之:输入查询
  • Vue中el-tree结合vuedraggable实现跨组件元素拖拽