Vue3 pinia的基本使用

pinia的使用跟vuex很像,去除了很多没用的api,写法有两种,一种老式的选项式api还有一种组合式api,用哪种根据自己喜好来,以下示例为组合式api

更多教程参考官网:pinia官网icon-default.png?t=N7T8https://pinia.vuejs.org/zh/

安装

npm install pinia

配置

import { createPinia } from 'pinia';
import persisted from "pinia-plugin-persistedstate";//持久化插件
import App from './App.vue'
const pinia = createPinia();
const app = createApp(App)
app.use(pinia.use(persisted));//使用pinia以及pinia持久化插件

新建store文件夹=>index.js

引入defineStore方法穿件一个store,主要接收三个参数

参数一:store的唯一key值

参数二:数据存储区以及方法,

参数三:持久化配置(将数据放缓存持久保存)

import {defineStore
} from "pinia"
import {ref
} from "vue"// 首页属性
export const usehomeStore = defineStore('storeKey', () => {let menuState = ref(false)//菜单展开状态const testData = ref('测试');function changeMenuStateFn() {menuState.value = !menuState.value}return {menuState,testData,changeMenuStateFn,}
},
{persist:{enabled:true,//是否开启持久化,对象形式不写默认为开启key:'menuShowState',//存储时候的key值,默认为defineStore的keystorage:"sessionStorage",//存储类型,默认localStoragepaths:['menuState'],//需要持久化的数据,默认全部serializer:{deserialize:()=>{console.log('ooo');},serialize:()=>{console.log('ppp');},},//序列化方法,默认为JSON.parse与JSON.stringifybeforeRestore: (ctx) => {console.log(`即将恢复 '${ctx.store.$id}'`)},afterRestore: (ctx) => {console.log(`刚刚恢复完 '${ctx.store.$id}'`)},}
}
)

页面使用:

使用的时候记得使用一下,因为向外暴露的是一个方法,所以需要调用一下才能获取到值,因为在store里面已经使用ref响应过了 所以无需用ref定义,直接在页面使用即是响应式数据,

注意:此处尽量不要解构,解构会丢失响应式,如果一定要解构请使用storeToRefs,

此方法需要从pinia中导入,

使用示例:示例来自官网

<script setup>
import { storeToRefs } from 'pinia'
const store = useCounterStore()
// `name` 和 `doubleCount` 是响应式的 ref
// 同时通过插件添加的属性也会被提取为 ref
// 并且会跳过所有的 action 或非响应式 (不是 ref 或 reactive) 的属性
const { name, doubleCount } = storeToRefs(store)
// 作为 action 的 increment 可以直接解构
const { increment } = store
</script>
import {usehomeStore,usePublic} from "@/store/index.js"
const homeStore = usehomeStore();
const publicStore = usePublic();
<el-aside class="aside" :width="homeStore.menuState?'60px':'200px'">

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

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

相关文章

机器学习基本概念2

资料来源&#xff1a; https://www.youtube.com/watch?vYe018rCVvOo&listPLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&index1 https://www.youtube.com/watch?vbHcJCp2Fyxs&listPLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&index2 分三步 1、 定义function b和w是需要透…

linux之autoconf(1)基础介绍

Linux之autoconf(1)基础介绍 Author&#xff1a;Onceday Date&#xff1a;2023年2023年12月10日 漫漫长路&#xff0c;才刚刚开始… 本文主要内容翻译自Autoconf官方文档&#xff0c;仅供学习交流之用。 全系列文章请查看专栏: buildroot编译框架_Once_day的博客-CSDN博客。…

FL Studio21最新FL水果编曲软件中文版在哪下载?

FL Studio21水果编曲软件是一款专业的音乐制作软件&#xff0c;被广泛地应用于电子音乐、hip-hop、流行乐等多种音乐类型的制作。该软件提供了丰富的音频编曲工具和音乐效果器&#xff0c;让用户可以轻松地创作出高品质的音乐作品。同时&#xff0c;这也是一款非常易于上手的软…

[ 云计算 | Azure 实践 ] 在 Azure 门户中创建 VM 虚拟机并进行验证

文章目录 一、前言二、在 Azure Portal 中创建 VM三、验证已创建的虚拟机资源3.1 方法一&#xff1a;在虚拟机服务中查看验证3.1 方法二&#xff1a;在资源组服务中查看验证 四、文末总结 一、前言 本文会开始创建新系列的专栏&#xff0c;专门更新 Azure 云实践相关的文章。 …

7-7 求补码

整数在内存中以二进制补码形式存储。对于给定的整数n&#xff0c;要求输出其4个字节长的补码。1个字节8个二进制位。 输入格式: 输入一个整数n(−231≤n≤231−1)。 输出格式: 输出n的补码。 输入样例1: 123输出样例1: 00000000000000000000000001111011输入样例2: -12…

YOLOv8改进 | 2023检测头篇 | 利用AFPN改进检测头适配YOLOv8版(全网独家创新)

一、本文介绍 本文给大家带来的改进机制是利用今年新推出的AFPN&#xff08;渐近特征金字塔网络&#xff09;来优化检测头&#xff0c;AFPN的核心思想是通过引入一种渐近的特征融合策略&#xff0c;将底层、高层和顶层的特征逐渐整合到目标检测过程中。这种渐近融合方式有助于…

【react hook】ahook的useThrottleEffect 是干嘛的

import { useThrottleEffect } from ahooks;useThrottleEffect 是 React Hooks 中的一个自定义 Hook&#xff0c;用于创建具有节流效果的副作用函数。 在 React 组件中&#xff0c;副作用函数通常在组件生命周期方法中执行&#xff0c;如 componentDidMount、componentDidUpda…

软件无线电SDR-频谱采集python实现

sdr做的频谱采集&#xff0c;保存的500张频谱图&#xff0c;能看出来是什么东西吗&#xff1f;

VC++使用GetProcessTimes获取进程创建时间、销毁时间、用户态时间、内核态时间

一、GetProcessTimes函数简介&#xff08;微软MSDN&#xff09; 微软提供了一个非常有用的API函数GetProcessTimes用来获取进程创建时间、销毁时间、用户态时间、内核态时间&#xff0c;msdn连接为&#xff1a;GetProcessTimes 函数 (processthreadsapi.h) 其函数原型为&#…

Linux内核--内存管理(六)补充--内核页表及内核虚拟空间

目录 一、引言 二、内核页表的结构 ------>2.1、页表项结构 ------>2.2、swapper_pg_dir ------>2.3、内核页表布局 ------>2.4、物理/虚拟 地址转换 ------>2.5、页表容量及表项偏移 ------>2.6、表项掩码及控制区域 ------>2.7、页标志位 ---…

【测试发布】

学习目标&#xff1a; 提示&#xff1a;这里可以添加学习目标 例如&#xff1a; 一周掌握 Java 入门知识 学习内容&#xff1a; 提示&#xff1a;这里可以添加要学的内容 例如&#xff1a; 搭建 Java 开发环境掌握 Java 基本语法掌握条件语句掌握循环语句 学习时间&#x…

基于NIQE算法的图像无参考质量评价算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 空域NSS特征提取 4.2 图像块选取 4.3 MVG模型 4.4 NIQE指标 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 clc; clear; close all; …

轻量封装WebGPU渲染系统示例<46>- 材质组装管线(MaterialPipeline)灯光、阴影、雾以及多Pass(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/material/src/voxgpu/sample/MaterialPipelineMultiPasses.ts 当前示例运行效果: 此示例基于此渲染系统实现&#xff0c;当前示例TypeScript源码如下&#xff1a; export class MaterialPipelin…

Python----内置模块

1、什么是Python模块 Python 模块(Module)&#xff0c;是一个Python 文件&#xff0c;以 .py 结尾&#xff0c;包含了 Python 对象定义和Python语句。模块能定义函数&#xff0c;类和变量&#xff0c;模块里也能包含可执行的代码。 2、模块的分类 在Python中&#xff0c;模块…

[ffmpeg] AVFrame 功能整理

背景 AVFrame 主要用来存储编码前的原始数据。 AVFrame 结构体 在 frame.h 文件中 主要变量 uint8_t *data[AV_NUM_DATA_POINTERS]; // 存储每个 planes 的数据 int linesize[AV_NUM_DATA_POINTERS]; // 每一行的音视频数据 uint8_t **extended_data; // 视频&#xff0c;…

java实现网络聊天

网络聊天实现步骤&#xff08;从功能谈论方法&#xff09;&#xff1a; 客户端&#xff1a; 1.登录面板&#xff1a;注册提醒用户注册格式&#xff0c;登录账号密码不为空&#xff0c;点击登录的时候需要连接服务器端&#xff0c;启动聊天面板。&#xff08;监听用户点击登录…

Windows下nginx的启动,重启,关闭等功能bat脚本

echo off rem 提供Windows下nginx的启动&#xff0c;重启&#xff0c;关闭功能echo begincls ::ngxin 所在的盘符 set NGINX_PATHG:::nginx 所在目录 set NGINX_DIRG:\projects\nginx-1.24.0\ color 0a TITLE Nginx 管理程序增强版CLSecho. echo. ** Nginx 管理程序 *** echo.…

JAVA使用HTTP代码示例

你好&#xff0c;Java开发者们&#xff01;今天&#xff0c;我要给你们带来一场硬核的盛宴&#xff0c;那就是在Java中使用HTTP协议进行网络通信的代码示例。准备好接受挑战了吗&#xff1f;Lets go&#xff01; 首先&#xff0c;我们需要导入一些必要的库&#xff0c;它们将成…

C++枚举类

枚举 C11有作用域枚举和无作用域枚举 无作用域枚举 特点 全局作用域&#xff1a;无作用域枚举的成员&#xff08;枚举值&#xff09;在包含它们的作用域内是直接可见的&#xff0c;不需要使用枚举类型名称作为前缀。 隐式类型转换&#xff1a;无作用域枚举的成员可以隐式地转换…

鸿蒙开发组件之ForEach列表

一、ForEach函数 ForEach函数是一个迭代函数&#xff0c;需要传递两个必须参数和一个可选参数。主要通过迭代来获取参数arr中的数据不断的生成单个Item来生成鸿蒙中的列表样式 二、先创建单个的Item的UI 通过嵌套Row与Column来实现单个Item的UI。例如图中没有折扣的可以看成一…