Nuxt3-pinia环境下实现数据持久化

news/发布时间2024/8/25 2:13:04

Nuxt3-pinia环境下实现数据持久化

1、安装

yarn add pinia @pinia/nuxt

然后进行配置,修改nuxt.config.ts

export default defineNuxtConfig({devtools: { enabled: false },typescript: {shim: false},modules: ['@pinia/nuxt',  // +'@pinia-plugin-persistedstate/nuxt', // +
  ],pinia: {autoImports: ['defineStore' // import { defineStore } from 'pinia'  // + 自动引入defineStore 
    ]}
})

2、新建目录composables,新建文件store.ts

export const useMockStore = defineStore('nuxtStore', () => {const mock = ref(0)const setMock = (num: number) => {mock.value = num}return {mock,setMock}
})// useMockStore、setMock、mock 名称自定义

 

 3、页面内使用

<template><div>21211 {{ foo}}store: {{ store.mock }}<button @click="store.setMock(99999)">按钮</button></div>
</template>
<!-- <script lang="ts">
export default {layout: 'default'
}
</script> -->
<script lang="ts" setup>/* layout */// definePageMeta({ layout: 'default' })/* interface *//* props *//* emit *//* store */const store = useMockStore()/* data */const route = useRoute()const foo = useFoo()console.log(route, foo, 'route')/* fn */
</script>

 

 

 4、使用pinia插件实现持久化 sessionStorage、localStorage

安装持久化插件:

yarn add @pinia-plugin-persistedstate/nuxt

 

1)、第一种,nuxt.config.ts 中配置持久化

//nuxt.config.ts
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({devtools: { enabled: false },typescript: {shim: false},modules: ['@pinia/nuxt','@pinia-plugin-persistedstate/nuxt',],pinia: {autoImports: ['defineStore' // import { defineStore } from 'pinia'
    ]},piniaPersistedstate: {storage: 'sessionStorage' // + 持久化
  }
})

新建 composables -> plugin.ts 文件

export const usePluginStateStore = defineStore('pluginStore', () => {const pState = ref(0)const setPState = () => {pState.value += 1}return {pState,setPState}
}, {persist: true // + 添加此处持久化
 })
// , {
//     persist: persistedState.sessionStorage
// }

页面内使用

<template><div>21211 {{ foo}}<div>store: {{ store.mock }}<button @click="store.setMock(99999)">按钮</button></div><div>pStore: {{pStore.pState}}<button @click="pStore.setPState">按钮</button></div></div>
</template>
<!-- <script lang="ts">
export default {layout: 'default'
}
</script> -->
<script lang="ts" setup>/* layout */// definePageMeta({ layout: 'default' })/* interface *//* props *//* emit *//* store */const store = useMockStore()const pStore = usePluginStateStore() // 持久化使用/* data */const route = useRoute()const foo = useFoo()console.log(route, foo, 'route')/* fn */
</script>

 2)、第二种,store 内设置

nuxt.config.ts 内配置

// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({devtools: { enabled: false },typescript: {shim: false},modules: ['@pinia/nuxt','@pinia-plugin-persistedstate/nuxt',],pinia: {autoImports: ['defineStore' // import { defineStore } from 'pinia'
    ]},// piniaPersistedstate: {//   storage: 'sessionStorage' // 持久化// }
})

新建 composables -> plugin.ts 文件

export const usePluginStateStore = defineStore('pluginStore', () => {const pState = ref(0)const setPState = () => {pState.value += 1}return {pState,setPState}
}, {// 注意:persist定义要做判断,因为localStorage/sessionStorage是客户端参数,所以需要加process.clientpersist: process.client && {storage: sessionStorage}
})

 

3)、第三种 更改 cookie

配置 nuxt.config.ts

// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({devtools: { enabled: false },typescript: {shim: false},modules: ['@pinia/nuxt','@pinia-plugin-persistedstate/nuxt',],pinia: {autoImports: ['defineStore' // import { defineStore } from 'pinia'
    ]},// piniaPersistedstate: {//   storage: 'sessionStorage' // 持久化// }
})

新建 composables -> plugin.ts 文件

export const usePluginStateStore = defineStore('pluginStore', () => {const pState = ref(0)const setPState = () => {pState.value += 1}return {pState,setPState}
}, {// 注意:persist定义要做判断,因为localStorage/sessionStorage是客户端参数,所以需要加process.clientpersist: '任意值' // 直接设置字符串可直接变更 cookie的值
})

页面内使用

<template><div>21211 {{ foo}}<div>store: {{ store.mock }}<button @click="store.setMock(99999)">按钮</button></div><div>pStore: {{pStore.pState}}<button @click="pStore.setPState">按钮</button></div></div>
</template>
<!-- <script lang="ts">
export default {layout: 'default'
}
</script> -->
<script lang="ts" setup>/* layout */// definePageMeta({ layout: 'default' })/* interface *//* props *//* emit *//* store */const store = useMockStore()const pStore = usePluginStateStore() // 持久化使用/* data */const route = useRoute()const foo = useFoo()console.log(route, foo, 'route')/* fn */
</script>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

http://mmall.preview.selleroa.com/couponProList?type=1&coupon_id=1706004850344ua5xx8vu

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.liansuoyi.cn/news/58123822.html

如若内容造成侵权/违法违规/事实不符,请联系连锁易网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

K8S部署MySQL5.7主从集群

参考 https://blog.csdn.net/qq_43114229/article/details/124078914 https://kubernetes.io/zh-cn/docs/tasks/run-application/run-replicated-stateful-application/ MySQL主从同步架构图mysql-0是master mysql-1和mysql-2是两个备份 当mysql写的时候,找headless service中…

《Document-level Relation Extraction as Semantic Segmentation》论文阅读笔记

《Document-level Relation Extraction as Semantic Segmentation》论文阅读笔记原文 代码 摘要 本文研究的是文档级关系抽取,即从文档中抽取出多个实体之间的关系。现有的方法主要是基于图或基于Transformer的模型,它们只考虑实体自身的信息,而忽略了关系三元组之间的全局信…

Python 生成随机字符串

0x00 吐槽最近让项目坑的没办法,老写一些脚本来协助工作,刚好在测试python生成word的时候遇到需要随机字符串来命名文档名,简单写点东西记录一下0x01 一班的童靴 其实随机字符串这个东西在任何语言里都经常会用到,而且解决方法也简单 首先定义一个字符串,随机字符串就从这…

【触想智能】工业一体机刷卡应用知识分享

工业一体机刷卡技术是一种高效、稳定、安全的身份认证方式,具有广泛的应用场景和优势。在工业自动化控制、生产过程监测等领域,它已成为必不可少的设备之一。一、工业一体机刷卡的原理:工业一体机刷卡的原理和普通的刷卡设备类似,都是通过读取磁条或芯片内嵌的信息,从而实现…

基于蓝鲸saas的业务配置同步管理平台设计与实现

业务背景该平台设计的初衷,本是源于另外一个环境治理项目的一部分,主要是负责跨环境的业务配置修改与同步,同时考虑到这块能力除了在该项目中可以应用到外,也可以独立作为一个单点能力提供给其他用户使用,故考虑设计为一个saas应用模式,既支持用户在管理端界面进行操作,…

06、HSMS协议介绍

本章的内容主要参考了 SECS半导体设备通讯-2 HSMS通信标准 ,外加上自己看的一些其他的文档。也加上了一些自己的理解,特此记录。若有侵权,请联系删除,谢谢。 再次特别感谢 SECS半导体设备通讯-2 HSMS通信标准 的作者。1、HSMS通信标准概述 HSMS 定义了使用 TCP/IP 作为物…

基于Ant Design设计语言的WinForm UI界面库

前言 经常在技术群里看到有小伙伴提问:WinForm有什么好看、开源的UI库推荐的吗?,今天大姚给大家分享一款基于Ant Design(使用Ant Design 5.0)设计语言、开源(Apache License)的WinForm UI界面库:AntdUI。假如你有好用的WinForm UI库推荐,欢迎文末留言🤞。WinForm介绍…

十四、PWR电源控制减少功耗

十二、PWR电源控制 PWR简介PWR(Power Control)电源控制 PWR负责管理STM32内部的电源供电部分,可以实现可编程电压监测器和低功耗模式的功能 可编程电压监测器(PVD)可以监控VDD电源电压,当VDD下降到PVD阀值以下或上升到PVD阀值之上时,PVD会触发中断,用于执行紧急关闭任务…

自我介绍+软工5问

这个作业属于哪个课程 软件工程2024(广东工业大学)这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering2024/homework/13135这个作业的目标 1.进行自我介绍2.学习Markdown语法和发表博客3.对本课程内容提出疑问自我介绍 大家好,我叫张佳伟,来自河…

VS2022 Android 设备管理器 添加 虚拟操作系统

1、挂上代理 并且配置操作系统环境。 2、以管理员的权限运行vs2022。3、在此文件夹下打开“C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE”,修改devenv.exe.config 文件。4、原来<system.net> <settings> <ipv6 enabl…

虚拟环境安装

创建虚拟环境激活虚拟环境使用 conda 安装 pip查看路径 pip show numpy查看所有的虚拟环境 conda info -e当前激活的环境带 * 6.指定 python 版本创建虚拟环境 conda create -n test-env python=3.8 7.pip conda deactivate #推出当前环境` conda remove -n test-env --all …

43泛型算法和绑定器

泛型算法和绑定器泛型算法和绑定器 泛型算法是STL库里面定义的一些算法,这些算法可以用一个接口操作各种数据类型,因此称为泛型算法。#include<algorithm>泛型算法接受的都是迭代器,这是为了统一形式 同时可以额外接受函数对象,更改泛型算法的功能绑定器 当需要一个一元…

C++网上购书系统项目的二次开发 2252416 hzx

1、来源:同学大二下的期末大作业:网上购书系统项目。 2、运行环境:VisualStudio 2019 代码: 点击查看代码 #include"StdAfx.h" #include<iostream> #include"person.h" #include<string.h> #include"globalfunction.h" #include…

Luogu P1220 关路灯 题解 [ 蓝 ][ 区间dp ]

关路灯题目描述某一村庄在一条路线上安装了 \(n\) 盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少)。老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯。为了给村里节省电费,老张记录下了每盏路灯的位置和功率,他每…

2024 ICPC Asia Pacific Championship-K-线段树合并or主席树

比赛链接:https://codeforces.com/contest/1938 给一棵有根树,执行以下代码: let L be an empty array for x = 1 to nfor y = 1 to nappend ((x - 1) * n * n + (LCA(x, y) - 1) * n + (y - 1)) to L sort L in non-decreasing order然后进行 \(q\) 次询问,每次问 \(L\) 中…

红日靶场01多角度打靶笔记

红日靶场01 这个笔记主要是利用这个靶场环境,对内网渗透的思路进行整合一下,因此过程中会涉及多个攻击方式和思路。 环境搭建windows7 是靶机01 Windows server 2008 R2 是靶机02 Windows server 2003 是靶机03 Windows 10 是攻击01 kali 是攻击02(cs服务端和msf都在上面)这个…

AwesomeTechnologyWeekly 值的关注的中文社区优质技术周刊一览

作为开发者,我们每天都需要吸收大量的信息补充我们的知识体系. Awesome Technology Weekly Zh-Hans 项目收集了中文技术社区各个领域的高质量的中文技术月/周/日刊,定时刷新获取最新一期中文技术月/周/日刊进行展示.作为开发者,我们每天都需要吸收大量的信息补充我们的知识体…

【电路板和线材之焊接验证方法】

焊接设备:电烙铁检验设备:电子维拉力计一、电路板焊接流程图:影响焊接效果参数及参数范围: 焊接的温度、焊接的时间、焊接的手法试验分组: 固定焊接手法,取被测电路板9块进行编号,按照不同的焊接时间和焊接温度进行下面九组试验。焊接完成后进行如下验证:焊接推力标准表…

mysqldump: Error: Binlogging on server not active

1.问题 今天在备份数据库时遇到问题,提示二进制日志尚未开启,无法使用--master-data=2 选项2.解决 启用二进制日志记录,打开 MySQL 配置文件(通常是 my.cnf 或 my.ini),添加以下选项即可。保存并重新启动 MySQL 服务器 #开启二进制日志binlog log-bin=mysql-bin # 开启Bi…
推荐文章