持久化 pinia 状态
pinia的状态与vuex一样把数据存在内存中,在刷新页面后会清理内存,数据会丢失。
要解决这个问题非常简单,在状态改变时将其同步到浏览器的存储中,如 cookie、localStorage、sessionStorage 。
可以搭配 pinia-persistedstate-plugin 插件来实现持久化,原理也是把数据存入localStorage中,只是插件会帮助自动存入与取出,不需要自己去操作localstorage 。(我使用pinia-plugin-persistedstate或者pinia-plugin-persist都无效!)
pinia-persistedstate-plugin
接下来就使用 pinia-persistedstate-plugin 插件实现 pinia 状态的持久化。
- 安装依赖:
npm i pinia-persistedstate-plugin
- 引入该插件,在创建 pinia 实例时传入该插件
src/store/index.ts:
-
import { createPinia } from "pinia"
-
import { createPersistedState } from 'pinia-persistedstate-plugin'
-
const pinia = createPinia();
-
pinia.use(createPersistedState())
-
export default pinia
main.ts:
-
import { createApp } from 'vue'
-
import store from './store/index'
-
-
const app = createApp(App)
-
app.use(store)
-
app.mount('#app')
- 在需要持久化状态的模块中设置 persist。咱假设 demo 模块需要对状态需要持久化,defineStore 第一个参数定义唯一的模块名,第二个参数传递 setup,其实还有第三个参数,可开启 persist:
src/store/user.ts:
-
...
-
const useDemoStore = defineStore('useUser', () => {
-
state:()=>{
-
return {
-
isLogin:false,
-
num:0
-
}
-
}
-
}, {
-
persist: true //可以自定义配置存储的地方,这是默认储存
-
})
在需要使用store的页面修改数据的时候,不要使用赋值解构取出,而是直接取出并修改。
-
//demo.vue
-
import {useUser} from '@/store/user'
-
const userStore = useUser() //获取store
-
-
const fn = ()=>{
-
userStore.num
-
}
插件帮助我们把数据存储到了localStorage
刷新浏览器后数据也不会重置为0了
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhhbceji
系列文章
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
excel图片置于文字下方的方法
PHP中文网 06-27 -
excel下划线不显示怎么办
PHP中文网 06-23 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22