学习Pinia 第七章(pinia插件)

简介: 学习Pinia 第七章(pinia插件)

pinia 和 vuex 都有一个通病 页面刷新状态会丢失

我们可以写一个pinia 插件缓存他的值

视频教程(强烈建议)Vue3 + vite + Ts + pinia + 实战 + 源码_哔哩哔哩_bilibili


const __piniaKey = '__PINIAKEY__'
//定义兜底变量
type Options = {
   key?:string
}
//定义入参类型
//将数据存在本地
const setStorage = (key: string, value: any): void => {
localStorage.setItem(key, JSON.stringify(value))
}
//存缓存中读取
const getStorage = (key: string) => {
return (localStorage.getItem(key) ? JSON.parse(localStorage.getItem(key) as string) : {})
}
//利用函数柯丽华接受用户入参
const piniaPlugin = (options: Options) => {
//将函数返回给pinia  让pinia  调用 注入 context
return (context: PiniaPluginContext) => {
const { store } = context;
const data = getStorage(`${options?.key ?? __piniaKey}-${store.$id}`)
store.$subscribe(() => {
setStorage(`${options?.key ?? __piniaKey}-${store.$id}`, toRaw(store.$state));
})
//返回值覆盖pinia 原始值
return {
...data
}
}
}
//初始化pinia
const pinia = createPinia()
//注册pinia 插件
pinia.use(piniaPlugin({
key: "pinia"
}))
目录
相关文章
|
存储 JavaScript API
Vue(第十五课)Pinia组件库的基本知识(一)
Vue(第十五课)Pinia组件库的基本知识(一)
178 0
|
2月前
|
JavaScript 前端开发 数据管理
vue2知识点:理解vuex、安装vuex、搭建vuex环境
vue2知识点:理解vuex、安装vuex、搭建vuex环境
34 0
|
4月前
|
JavaScript
vue中的插件概念是什么?新手小白如何在Vue中引入插件
【8月更文挑战第21天】vue中的插件概念是什么?新手小白如何在Vue中引入插件
79 1
|
4月前
|
存储 JavaScript API
从 Vuex 到 Pinia:解决 Pinia 缺失的三个基本功能
从 Vuex 到 Pinia:解决 Pinia 缺失的三个基本功能
|
7月前
Vue3+Vite+Pinia+Naive后台管理系统搭建之五:Pinia 状态管理
Vue3+Vite+Pinia+Naive后台管理系统搭建之五:Pinia 状态管理
69 1
|
7月前
Vue3+Vite+Pinia+Naive后台管理系统搭建之一:基础项目构建
Vue3+Vite+Pinia+Naive后台管理系统搭建之一:基础项目构建
65 1
|
7月前
Vue3+Vite+Pinia+Naive后台管理系统搭建之四:Naive UI 组件库的安装和使用
Vue3+Vite+Pinia+Naive后台管理系统搭建之四:Naive UI 组件库的安装和使用
228 1
|
7月前
Vue3+Vite+Pinia+Naive后台管理系统搭建之三:vue-router 的安装和使用
Vue3+Vite+Pinia+Naive后台管理系统搭建之三:vue-router 的安装和使用
92 0
|
7月前
Vue3+Vite+Pinia+Naive后台管理系统搭建之二:scss 的安装和使用
Vue3+Vite+Pinia+Naive后台管理系统搭建之二:scss 的安装和使用
106 0
|
缓存
Vue3案例-todoMVC-pinia版 (可跟做练手)
Vue3案例-todoMVC-pinia版 (可跟做练手)
49 0