草庐IT

持久化 pinia 状态

pinia的状态与vuex一样把数据存在内存中,在刷新页面后会清理内存,数据会丢失。要解决这个问题非常简单,在状态改变时将其同步到浏览器的存储中,如 cookie、localStorage、sessionStorage 。可以搭配pinia-persistedstate-plugin  插件来实现持久化,原理也是把数据存入localStorage中,只是插件会帮助自动存入与取出,不需要自己去操作localstorage。(我使用pinia-plugin-persistedstate或者pinia-plugin-persist都无效!)pinia-persistedstate-plugin接下来

vue3+ts+pinia整合websocket

文章目录一.目标二.前置环境三.websocket通用模板一.目标先有实时数据需要展示.由于设备量极大且要对设备参数实时记录展示.axios空轮询不太适合.选择websocket长连接通讯.使用pinia原因是pinia具备共享数据性质.可以作为消息队列缓存数据,降低渲染压力.同时方便多个页面或组件获取websocket数据二.前置环境安装pinia注册pinia不再详细叙述,自行看官方文档.npminstallpinia三.websocket通用模板笔者自行整合网络资源,写了一套较为通用的通信模板.包含消息队列缓存,心跳检测,断线重连.读者可以自行阅读以下代码调整到业务所需.同时也请大家捉虫

uniapp (vite +vue3+ts+pinia) 搭配微信小程序云开发项目架构搭建-避坑指南

前言最近开始了项目旧改,将以前开发的一些校园小程序由uniapp+vue2版本升级为,unipp+vite+ts+vue3的架构,顺便把代码质量提升一下。由于是单兵作战,我选择将以前的后端摒弃,选择了微信小程序云开发作为后端,这样可以将我的开发精力聚焦在小程序上。但这么做也有如下两个缺点:使用了微信小程序云开发后,uniapp只适用于编译成微信小程序,失去了跨端的能力。uniapp使用云开发并不方便,尤其是使用了typescript后需要做大量的额外配置。综合考虑之下我还是使用了微信小程序云开发,因为本身我做的就是微信小程序,只不过以uniapp为框架进行开发,而第二点的话我也找到了解决的方法

解决pinia中的i18n切换语言不生效的问题

在我的项目中,使用i18n切换语言后,会进行router.push来刷新页面。但我发现写在store中的选项(我把它们用作下拉框组件的options,例如options="store.statusOption"),却并没有切换语言。它们需要我手动刷新页面后才能够切换语言。然而其它组件中的语言切换都很正常。//修改之前exportconstselectStore=defineStore('selectOption',{state:()=>{return{...statusOption:[{label:`${i18n.global.t('start')}`,value:'ENABLE',},{la

【Vue全家桶】Pinia状态管理

【Vue全家桶】Pinia状态管理文章目录【Vue全家桶】Pinia状态管理写在前面一、认识Pinia1.1认识Pinia1.2为什么使用Pinia?二、Store2.1定义Store2.2Option对象2.3setup函数2.4使用定义的Store三、Pinia核心概念State3.1定义State3.2操作State3.3使用选项式API的用法四、Pinia核心概念Getters4.1认识Getters4.2访问Getters4.3向Getters传递参数五、Pinia核心概念Actions5.1认识Actions5.2Actions执行异步操作5.3访问其他store的Actions写

【Vue全家桶】Pinia状态管理

【Vue全家桶】Pinia状态管理文章目录【Vue全家桶】Pinia状态管理写在前面一、认识Pinia1.1认识Pinia1.2为什么使用Pinia?二、Store2.1定义Store2.2Option对象2.3setup函数2.4使用定义的Store三、Pinia核心概念State3.1定义State3.2操作State3.3使用选项式API的用法四、Pinia核心概念Getters4.1认识Getters4.2访问Getters4.3向Getters传递参数五、Pinia核心概念Actions5.1认识Actions5.2Actions执行异步操作5.3访问其他store的Actions写

uniapp引用pinia,app端白屏报错:reportJSException >>>> exception function:createInstanceContext...

一、场景uniapp引用pinia,app端进入应用白屏。reportJSException>>>>exceptionfunction:createInstanceContext,exception:whitescreencausecreateinstanceContextfailed,checkjsstack->/atuseStore(app-service.js:2309:15)二、分析问题出现的原因就是store实例环境还没加载。代码层面问题出现的位置在store.js文件里,通过$subscribe实现持久化这块。三、解决加上定时器,延时2s再让它持久化四、扩展import{ defi

Pinia 刷新页面store数据更新页面没有变化,响应式失效

问题:当我在组件的setup中使用useStore来获取store的时候,Pinia.js的store已经被更新了,但是组件渲染没变化。importuseManagerStorefrom"@/store/modules/managers";constManagerStore=useManagerStore();const{count}={ManagerStore}原因:当count我们在结构赋值的时候数据丢失了响应式解决1.计算属性constcount=computed(()=>ManagerStore.count);2.使用storeToRefsconst{count}=storeToRef

vue3的pinia(大菠萝)

一:Pinia简介和五大优势Pinia是vue生态里Vuex的替代者,一个全新的vue状态管理库。在Vue3成为正式版以后,尤雨溪强势推荐的项目就是Pinia。那先来看看Pinia比Vuex好的地方,也就是Pinia的五大优势。可以对Vue2和Vue3做到很好的支持,也就是老项目也可以使用Pinia。抛弃了Mutations的操作,只有state、getters和actions.极大的简化了状态管理库的使用,让代码编写更加容易直观。不需要嵌套模块,符合Vue3的Compositionapi,让代码更加扁平化。完整的TypeScript支持。Vue3版本的一大优势就是对TypeScript的支持

Tauri-Admin通用后台管理系统|tauri+vue3+pinia桌面端后台EXE

基于tauri+vite4+pinia2跨端后台管理系统应用实例TauriAdmin。tauri-admin基于最新跨端技术 TauriRustwebview2 整合 Vite4 构建桌面端通用后台管理解决方案。搭载轻量级ve-plus组件库、支持多窗口切换管理、vue-i18n多语言包、动态路由权限、常用业务功能模块、3种布局模板及动态路由缓存等功能。使用技术编码工具:vscode框架技术:tauri+vite^4.2.1+vue^3.2.45+pinia+vue-routerUI组件库:ve-plus(基于vue3轻量级UI组件库)样式处理:sass^1.63.6图表组件:echarts^