【Vue3】Pinia存储及读取数据
- 背景
- 简介
- 开发环境
- 开发步骤及源码
背景
随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的日子。本文内容并非完全原创,大多是参考其他文章资料整理所得,感谢每位技术人的开源精神。
简介
本文介绍 Vue3 中如何使用 Pinia 存储和读取数据。
Pinia 是 Vue 专属的状态管理库,允许跨组件或页面共享数据。
开发环境
分类 | 名称 | 版本 |
---|---|---|
操作系统 | Windows | Windows 11 |
IDE | Visual Studio Code | 1.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/
。