Pinia基本使用
创始人
2024-02-16 04:21:15
0

文章目录

  • 1. 介绍
  • 2. Pinia 和 Vuex
  • 3. 安装和基本使用
  • 4. pinia修改数据状态
  • 5. pinia持久化处理
  • 6. 自定义插件


1. 介绍

它是2019 年 11 月对于新版本的vue提供的组合Api进行的尝试,它可以很好的集合vue新的api方法,且还很好的支持ts的写法,Pinia已经被纳入官方代码仓库中,也可以理解为Pinia为最新版本的vuex5。

在这里插入图片描述

2. Pinia 和 Vuex

  • Vuex:namespaced State、Gettes、Mutations(同步)、Actions(异步)
  • Pinia: State、Gettes、Actions(同步异步都支持)

Vuex 当前最新版是 4.x

  • Vuex4 用于 Vue3
  • Vuex3 用于 Vue2

Pinia 当前最新版是 2.x,它即支持 Vue2 也支持 Vue3。就目前而言 Pinia 是我们在vue3 项目中的首选,尤其是 TypeScript 的项目。

3. 安装和基本使用

安装:

yarn add pinia

使用:

  1. 在入口文件进行初始化(main.js):

    // 创建vue入口程序,由原来的类实例,变成现在的函数方式,为了更好在打包时优化代码
    import { createApp } from 'vue'
    // 根组件
    import App from './App.vue'
    // 路由
    import router from './router'import createGlobalComponent from './components'
    import globalProperties from './config/globalProperties'// pinia
    import { createPinia } from 'pinia'// pinia配置
    const pinia=createPinia()// 工作中常用写法:
    createApp(App).use(createGlobalComponent).use(globalProperties).use(router).use(pinia).mount('#app')
    
  2. 创建 pinia 模块(pinia/film.js):

    import { defineStore } from 'pinia'// 参数1:命名空间名称
    // 参数2:对象,配置 state getters actions
    const useFilmStore = defineStore('film',{state:()=>({num:100}),actions:{}
    })
    export default useFilmStore
    
  3. 电影页面:

    
    

4. pinia修改数据状态

电影页面:


pinia/film.js:

import { defineStore } from 'pinia'// 参数1:命名空间名称
// 参数2:对象,配置 state getters actions
const useFilmStore = defineStore('film', {state: () => ({num: 100,arr: [1, 2, 3]}),actions: {addNum(n) {// 方案1// 同步this.num += n// 异步setTimeout(() => {this.num += n}, 1000)// 方案2this.$patch(state=>{state.num+=nstate.arr.push(Date.now())})},}
})
export default useFilmStore

在这里插入图片描述

5. pinia持久化处理

安装:

yarn add pinia-plugin-persistedstate@2

入口文件中导入:

// pinia中数据持久化
import { persistedState } from 'pinia-plugin-persistedstate'pinia.use(persistedState)

在pinia模块中使用:

import { defineStore } from 'pinia'// 参数1:命名空间名称
// 参数2:对象,配置 state getters actions
const useFilmStore = defineStore('film', {// 当前pinia模块中的所有的数据进行持久化处理// 默认使用的是 localStorage,且它存储在 localStorage 中的 key 的名称为命名空间名称[id名称]// persist: true,// 指定模块中要持久化的数据persist: {// 指定要持久化的 state 对象中的属性名称paths: ['num'],// 自定义localStorage中的key的名称,一般不修改key: 'filmstore',// 自定义使用localStorage还是sessionStorage存储介质storage: window.sessionStorage},state: () => ({num: 100,arr: [1, 2, 3]}),actions: {addNum(n) {// 方案1// 同步this.num += n// 异步setTimeout(() => {this.num += n}, 1000)// 方案2this.$patch(state => {state.num += nstate.arr.push(Date.now())})},}
})
export default useFilmStore

在这里插入图片描述

6. 自定义插件

Pinia中文文档:https://pinia.web3doc.top/core-concepts/plugins.html

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...