• vue3.2的vuex升级pinia


     Pinia是什么?

    Pinia 2019 年由 vue.js 官方成员重新设计的新一代状态管理器 , 更替 Vuex4 成为 Vuex5; 是最新一代的
    轻量级状态管理插件。按照尤雨溪的说法, vuex 将不再接受新的功能,建议将 Pinia 用于新的项目。
    Pinia 的优点
    简便,存储和组件变得很类似,你可以轻松写出优雅的存储。
    类型安全,通过类型推断,可以提供自动完成的功能。
    vue devtools 支持,可以方便进行调试。
    Pinia 支持扩展,可以非常方便地通过本地存储,事物等进行扩展。
    模块化设计,通过构建多个存储模块,可以让程序自动拆分它们。
    非常轻巧,只有大约 1kb 的大小。
    服务器端渲染支持。
    如何使用
    使用 Pinia 非常简单,你可以通过 defineStore 来简单创建一个存储管理。
    ​​​​​​​yarn add pinia -s

    yarn config set ignore-engines true
    导入 pinia
    1. import { createApp } from 'vue'
    2. import App from './App.vue'
    3. import router from './router/index'
    4. import {createPinia} from 'pinia'  
    5. const pinia = createPinia();//实例化pinia
    6. createApp(App).use(router).use(pinia).mount('#app')
    状态定义
    可以通过 defineStore 来简单创建一个存储管理 ;
    第一个参数 :相当于为容器起一个名字。注意:这里的 名字必须唯一,不能重复
    第二个参数 :可以简单理解为一个配置对象,对容器仓库的配置说明
    1. import { defineStore } from 'pinia'
    2. export const mainStore = defineStore('main',{
    3.   state(){
    4.       return {
    5.           title:'itlove',
    6.           count:1,
    7.       }
    8.   },
    9.   getters:{
    10.       changeCount(){
    11.           return this.count+10
    12.       }
    13.   },
    14.   actions:{
    15.       addCount(){
    16.   }
    17.   }
    18. })
    引用状态数据

    或者

    修改状态数据
    state 状态值修改的多种方式
    使用 $patch 改变数据 ,$patch 可以同时修改多个值
    方式一:通过 count.value+1;
    方式二:仓库实例的 $patch 方法
      store.$patch({
        count: count.value+1,
      });
      $patch 也可以传入一个函数,函数参数为 state 状态
      store.$patch((state) => {
        state.title = "hello 艾梯哎教育 !";
        state.count++;
      });
    方式三:通过 action()
    store.addCount()
    pinia actions 的使用
    pinia 中没有 mutations, 只有 actions, 不管是同步还是异步的代码 , 都可以在 actions 中完成
    1. actions:{
    2.   //actions 异步请求
    3.   async login(user, password) {
    4.       const userData = await apiLogin(user, password);
    5.      
    6.       this.$patch({
    7.           name: user,
    8.           ...userData,
    9.       })
    10. }
    11. }
    pinia 数据持久化
    通过 Pinia 插件快速实现持久化存储
    插件安装:
    命令: npm i pinia-plugin-persist -S

     

    使用插件
    1. import {createPinia} from 'pinia'
    2. import piniaPluginPersist from 'pinia-plugin-persist'
    3. const pinia = createPinia();  
    4. pinia.use(piniaPluginPersist);
    5. createApp(App).use(router).use(pinia).mount('#app')
    模块开启持久化
    1. persist: {
    2.       enabled: true, //开启
    3.       strategies:[
    4.           {
    5.               key: 'store',
    6.               storage: sessionStorage,
    7.               paths:['count']
    8.           }
    9.       ]
    10.   }

    以下为实战

     

     应用

     

    后续高级 提升

    pinia 数据持久化
    通过 Pinia 插件快速实现持久化存储
    插件安装:
    命令: npm i pinia-plugin-persist -S

    使用插件
    1. import {createPinia} from 'pinia'
    2. import piniaPluginPersist from 'pinia-plugin-persist'
    3. const pinia = createPinia();  
    4. pinia.use(piniaPluginPersist);
    5. createApp(App).use(router).use(pinia).mount('#app')
    模块开启持久化
    1. persist: {
    2.       enabled: true, //开启
    3.       strategies:[
    4.           {
    5.               key: 'store',
    6.               storage: sessionStorage,
    7.               paths:['count']
    8.           }
    9.       ]
    10.   }

  • 相关阅读:
    React整理总结(二、组件化开发)
    儿童龋齿:原因与预防护理
    Vue学习之--------全局事件总线(2022/8/22)
    力扣(LeetCode)容器装水问题
    Pytorch深度强化学习1-2:详解K摇臂赌博机模型和ϵ-贪心算法
    去除 Zotero + Obsidian 复制粘贴参考文献表时的多余空行(ctrl+shift+C)
    OLED透明屏交互技术:开创未来科技的新篇章
    【python opencv cuda】
    还在寻找PDF压缩方法?这个方法值得一试
    使用Hadoop MapReduce分析邮件日志提取 id、状态 和 目标邮箱
  • 原文地址:https://blog.csdn.net/cao919/article/details/128141471