Pinia+Router学习笔记(五)

简介: 本节记录例API和Pinia持久化插件相关内容

例API存在于通过pinia导出的函数调用后的返回值中,主要有以下几种:

$reset 重置store到其初始状态
$subscribe 当state中的数据发生变化时调用,接收一个回调函数,其中有args和state两个参数
$onAction 当actions被调用时会执行这个函数,接收一个回调函数,有一个args参数

Pinia持久化插件:

import { createApp,toRaw } from 'vue'
// import './style.css'
import App from './App.vue'
// import ElementPlus from 'element-plus'
// import 'element-plus/dist/index.css'
// import './css/index.css'
import { createPinia, PiniaPluginContext } from 'pinia'

export const app = createApp(App)

// app.use(ElementPlus)

type Options = {
    key?: string
}

// 定义兜底变量,如果用户没有传key则默认key为'xiaoman'
const __piniaKey__: string = 'xiaoman'

// 在localsession中存储键值对
const setStorage = (key: string, value: any) => {
    localStorage.setItem(key, JSON.stringify(value))
}

// 定义取内容的函数
const getData = (key:string) => {
    return localStorage.getItem(key) ? JSON.parse(localStorage.getItem(key) as string) : {}
}

// 利用函数柯里化使key能够被传入
const piniaPlugin = (option: Options) => {
    return (context: PiniaPluginContext) => {
        const { store } = context
        // 将数据取出并返回给state,使页面上的内容发生变化(store.$id是每个store的唯一标识符)
        const data = getData(`${option?.key ?? __piniaKey__}-${store.$id}`)
        store.$subscribe(() => {
            // 由于store.$state是一个proxy对象,因此通过toRaw使其成为一个原始对象
      // 如果没有传入key则默认为兜底变量xiaoman(??是空置合并运算符)
            setStorage(`${option?.key ?? __piniaKey__}-${store.$id}`, toRaw(store.$state))
        })
        return {
            ...data
        }
    }
}

const store = createPinia()

store.use(
    piniaPlugin({
        key: 'pinia',
    })
)

app.use(store)

app.mount('#app')

至此,pinia完结

相关文章
HashMap,你是怎么做到的Key重复?
HashMap,你是怎么做到的Key重复?
|
Windows Linux
fedora10 wine 使用windows软件
      通过wine实现在linux下运行windows下的exe文件,以上是dyli在fedora10里面配置的全程记录!   1 wine下载与安装   [root@localhost thread_create]# yum install wine 载入插...
1094 0
|
2天前
|
数据采集 人工智能 安全
|
11天前
|
云安全 监控 安全
|
3天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1021 151
|
3天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话
|
17天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1720 9
|
8天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
660 152
|
10天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
625 13