当前位置: 首页 > news >正文

【Vue3】Pinia存储及读取数据

【Vue3】Pinia存储及读取数据

  • 背景
  • 简介
  • 开发环境
  • 开发步骤及源码

背景

随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的日子。本文内容并非完全原创,大多是参考其他文章资料整理所得,感谢每位技术人的开源精神。

简介

本文介绍 Vue3 中如何使用 Pinia 存储和读取数据。

Pinia 是 Vue 专属的状态管理库,允许跨组件或页面共享数据。

开发环境

分类名称版本
操作系统WindowsWindows 11
IDEVisual Studio Code1.91.1

开发步骤及源码

1> 创建 Vue3 工程,参考:【Vue3】工程创建及目录说明。

2> 执行 npm i pinia 命令安装 Pinia。

PS D:\...> npm i piniaadded 3 packages in 10s12 packages are looking for fundingrun `npm fund` for details

3> 修改 src 目录下 main.ts,引入 Pinia。

import { createApp } from 'vue'
import App from './App.vue'
// 引入
import { createPinia } from 'pinia'createApp(App)// 创建并使用.use(createPinia()).mount('#app')

4> 在 src 目录下创建 store 目录,并在此目录中创建一个 book.ts,用于集中存储书籍数据。

import { defineStore } from "pinia"export const useBookStore = defineStore('book', {// state 必须写成函数形式,返回的对象即是集中存储的数据state() {return {bookCount: 5,books: [{ id: '001', title: '坐天下', author: '张宏杰' },{ id: '002', title: '明朝那些事儿', author: '当年明月' },{ id: '003', title: '太白金星有点烦', author: '马伯庸' },{ id: '004', title: '活着', author: '余华' },{ id: '005', title: '饥饿的盛世', author: '张宏杰' },]}}
})

注意命名规范 useXxxStore,其中前缀 use 和后缀 Store 是固定的。

5> 新建一个功能组件读取并展示 Pinia 中数据。

<template><div class="books"><h2>图书数量:{{ bookStore.bookCount }}</h2><h2>图书列表</h2><ul><li v-for="book in bookStore.books" :key="book.id">{{ book.title }} -- {{ book.author }}</li></ul></div>
</template><script setup lang="ts">
import { useBookStore } from '@/store/book'const bookStore = useBookStore()
</script><style scoped lang="scss">
.books {background-color: aquamarine;padding: 20px;li {font-size: 20px;height: 35px;line-height: 35px;}
}
</style>

注意:需要执行 npm install -D sass 命令安装 CSS 预处理器。

6> 修改 Vue 根组件 src/App.vue,引入以上组件。

<template><div class="content"><Book /></div>
</template><script setup lang="ts">
import Book from './components/Book.vue'
</script><style scoped lang="scss">
.content {background-color: darkgray;padding: 20px;
}
</style>

7> 执行命令 npm run dev 启动应用,浏览器访问:http://localhost:5173/
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • [Meachines] [Easy] valentine SSL心脏滴血+SSH-RSA解密+trp00f自动化权限提升+Tmux进程劫持权限提升
  • 07、MySQL-多表查询
  • 关于重复提交
  • k8s—Prometheus+Grafana+Altermaneger构建监控平台
  • 2024年软件测试八股文(含答案+文档)
  • Qwen2-7b+AnythingLLM+ollama 部署API调用
  • Linux 进程概念
  • 高效清理优化工具 Sonoma Cache Cleaner mac 19.0.6注册激活版
  • PCIe学习笔记(20)
  • FFmpeg音频重采样基本流程
  • 代码随想录第34天|动态规划
  • 线程(Pthread)
  • 延时队列与redis and rabbitmq
  • 大模型学习笔记 - LLM 解码与部署
  • LVS 调度器 nat和DR模式
  • ES6语法详解(一)
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • IP路由与转发
  • Java Agent 学习笔记
  • JavaWeb(学习笔记二)
  • Joomla 2.x, 3.x useful code cheatsheet
  • JS字符串转数字方法总结
  • React-Native - 收藏集 - 掘金
  • Vue2.x学习三:事件处理生命周期钩子
  • 你不可错过的前端面试题(一)
  • 微信小程序:实现悬浮返回和分享按钮
  • 小程序测试方案初探
  • 阿里云ACE认证学习知识点梳理
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​Python 3 新特性:类型注解
  • ​力扣解法汇总946-验证栈序列
  • #QT(一种朴素的计算器实现方法)
  • $ git push -u origin master 推送到远程库出错
  • (1)(1.13) SiK无线电高级配置(五)
  • (不用互三)AI绘画:科技赋能艺术的崭新时代
  • (二)c52学习之旅-简单了解单片机
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (四)汇编语言——简单程序
  • (一)认识微服务
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • *算法训练(leetcode)第四十七天 | 并查集理论基础、107. 寻找存在的路径
  • .Mobi域名介绍
  • .net core 6 集成和使用 mongodb
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET WPF 抖动动画
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .NET下的多线程编程—1-线程机制概述
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • @RestControllerAdvice异常统一处理类失效原因
  • [ 第一章] JavaScript 简史
  • [ 蓝桥杯Web真题 ]-布局切换
  • [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网
  • [.net 面向对象程序设计进阶] (19) 异步(Asynchronous) 使用异步创建快速响应和可伸缩性的应用程序...