Pinia 官方网站:pinia.vuejs.org

一、安装Pinia

npm install pinia --save

二、配置Pinia

(默认项目都使用 TypeScript ,默认后缀都是.ts)
在 src 目录内新建一个 store 的目录,然后在此目录下新建一个 index.ts 文件,内容如下:

import { createPinia } from 'pinia'const store = createPinia()export default store

三、在项目中注册并启用Pinia

打开项目下的 “main.ts”,在里面追加pinia的内容:

import { createApp } from 'vue'
import App from './App.vue'
// 导入Pinia状态管理器
import store from './store/index'createApp(App).use(store).mount('#app')

四、创建一个State

在 src/store 目录下新建一个 user.ts 文件,内容如下:

import { defineStore } from 'pinia'export const userStore = defineStore('userInfo', {state: () => {return {userID: '10001',userName: '某同学',}},getters: {fullName: (state) => {return `${state.userName}(${state.userID})`},},// action 支持 async/await 的语法,可以自行添加使用// action 里的方法相互之间调用,直接用 this 访问即可actions: {updateUserName(name: string) {this.userName = name},},
})

五、在页面中使用这个Store

例如需要在 app.vue 这个页中使用,内容如下:

<template>{{ store.fullName }}<p><button @click="onChangeName()">改变Store里的名字</button></p>
</template><script setup lang="ts">
import { ref, onMounted } from 'vue'
import { userStore } from '@/store/user'const store = userStore()const onChangeName = (name) => {store.updateUserName(name ?? '李同学')
}onMounted(() => {onChangeName('张同学')
})</script><style scoped></style>

到此一个基础的store就已经完成,如果还需要结合Local Storage持久化存储数据,接着往下看

六、Pinia的数据持久化,使用插件(pinia-plugin-persist)

pinia plugin persist官方网站:pinia-plugin-persist

1、安装 pinia-plugin-persist

npm install pinia-plugin-persist --save

2、在 Pinia 中启用 pinia-plugin-persist

打开 src/store/index.ts ,修改内容如下:

import { createPinia } from 'pinia'
import piniaPluginPersist from 'pinia-plugin-persist'const store = createPinia()
store.use(piniaPluginPersist)export default store

3、在一个state中使用localStorage存储数据

打开上面创建的 user.ts 文件,修改内容如下:

import { defineStore } from 'pinia'export const userStore = defineStore('userInfo', {state: () => {return {userID: '10001',userName: '某同学',}},getters: {fullName: (state) => {return `${state.userName}(${state.userID})`},},actions: {updateUserName(name: string) {this.userName = name},},// 开启数据缓存persist: {enabled: true,strategies: [{key: 'my_project', // key可以自己定义,不填的话默认就是这个store的IDstorage: localStorage, // storage可以填sessionStorage,localStoragepaths: ['userID', 'userName'] }, // paths是需要存储的字段,不填就是全部},],},
})

Vue3推荐的替代Vuex的新一代状态管理工具:Pinia 配置教程相关推荐

  1. Vue新一代状态管理工具—Pinia—都2023年了,快学起来吧!

    Pinia 基本介绍 Pinia 是 Vue.js 的轻量级状态管理库 官方网站:https://pinia.vuejs.org/ 中文文档: https://pinia.web3doc.top/in ...

  2. vue3状态管理工具 pinia的使用

    vue3状态管理工具 pinia的使用 pinia 是一个轻量级的状态管理库,属于 vue3 生态圈新的成员之一,也可以把它看做 vuex5,同时支持 vue2 和 vue3,模块化的设计让它的结构十 ...

  3. Vue最新状态管理工具Pinia——彻底搞懂Pinia是什么

    Pinia从了解到实际运用--彻底搞懂什么是Pinia 知识回调(不懂就看这儿!) 场景复现 什么是pinia pinia相比vuex的优势 为什么要使用pinia? 基本示例 知识回调(不懂就看这儿 ...

  4. vue3 状态管理工具 pinia 使用

    1.安装pinia npm install pinia --save 2.创建 Store 新建一个 store 文件,创建 index.ts import { createPinia } from ...

  5. Pinia 上手指南 -- 新一代状态管理工具,它会成为 Vuex 的良好替代品吗?

    目录 一.简介 二.入门 1.安装 2.何为 Store ? 3.何时使用 Store ? 三.基本使用 1.Store 2.State 定义 state 获取 state 重置 state 更换 s ...

  6. VueX(Vue状态管理模式)

    一.初识VueX 1.1 关于VueX VueX是适用于在Vue项目开发时使用的状态管理工具.试想一下,如果在一个项目开发中频繁的使用组件传参的方式来同步data中的值,一旦项目变得很庞大,管理和维护 ...

  7. Mobx | 强大的状态管理工具 | 可以用Mobx来替代掉redux

    来源简书 电梯直达 https://www.jianshu.com/p/505d9d9fe36a Mobx是一个功能强大,上手非常容易的状态管理工具.就连redux的作者也曾经向大家推荐过它,在不少情 ...

  8. 在vue项目中引用vuex状态管理工具

    在vue项目中引用vuex状态管理工具 一.vuex是什么? 二.使用步骤 1.引入库 2.在main.js文件引入配置 3.配置store/index.js文件 4.获取state数据 5.获取ge ...

  9. vue3状态管理模式 Pinia

    状态管理库 Pinia是Vue的专属状态管理库,它允许你跨组件或页面共享状态 1:安装与使用pinia 1.1 安装语法:npm install pinia 1.2 创建一个pinia(根存储)并将其 ...

最新文章

  1. ios 贝塞尔曲线 颜色填充_PS的3D颜色深度映射到球体模拟天线
  2. 斯坦福年度AI报告:人工智能全面逼近人类能力
  3. Asp.net core 启动流程
  4. 【MySQL】MySQL 如何实现 唯一随机数ID
  5. 发布一个定制的webpart:R***eader
  6. kvm网卡虚拟化之vdpa技术
  7. Python接口自动化-接口基础(一)
  8. LaTex ——P2 源文件的基本结构
  9. traefik 结合 docker-compose 的快速安装及使用
  10. 跳出框架iframe的操作语句
  11. php的UDP攻击,phpddos应对 最近新起一种udp flood的攻击形式
  12. Excel 转置分组时如何保留没有对应数据的空组
  13. 【FPGA】:ip核----ram based shift register
  14. 阿里云datav自定义组件,引入高德地图API
  15. [每日一氵] Python以管理员权限运行程序
  16. Android车机初体验
  17. 【自然语言处理】【ChatGPT系列】FLAN:微调语言模型是Zero-Shot学习器
  18. 优化:java递归实现笛卡尔积算法
  19. GitHub如何上传?(傻瓜指南)
  20. 为什么大家都想进入IT行业?IT行业到底好不好?

热门文章

  1. bigemap如何导入矢量边界范围下载地图(KML/KMZ/SHP)
  2. 服务器安装linux亮机卡,井蛙杂谈——HQPlayer升频折腾手记——108楼更新3700x,9700K完美7EC配置方案...
  3. Python画圣诞树和烟花源代码
  4. 服务器cpu 爆满问题排查
  5. 登录这个轮子,你还在造?
  6. 怎么卸载python3.6_Mac 卸载Python3.6
  7. [2022-09-20]神经网络与深度学习第2章-simple classification
  8. 比尔盖茨 1974 年简历曝光
  9. BAT互联网公司的程序员,应用程序架构思路,这些都懂?
  10. (转)经典SQL查询语句大全