• pinia


    私人博客

    许小墨のBlog —— 菜鸡博客直通车

    系列文章完整版,配图更多,CSDN博文图片需要手动上传,因此文章配图较少,看不懂的可以去菜鸡博客参考一下配图!

    系列文章目录

    前端系列文章——传送门
    后端系列文章——传送门



    pinia

    pinia是新一代状态管理工具,适用于多个框架,但和vue3是黄金搭档。

    我们可以理解为下一代的vuex。

    下载安装:

    npm install pinia
    
    • 1

    使用步骤:

    1. 在main.js中,将pinia挂载到根实例上

    2. 创建仓库数据

      import { defineStore } from 'pinia'
      // useLoginStore是自定义的变量 - 通常都是用use开头的
      // defineStore是从pinia中解构的方法,固定的
      // loginStore是自定义的字符串 - 表示当前仓库的唯一标识符
      export const useLoginStore = defineStore('loginStore', {
          // state表示存放数据的地方
          // state的值是一个函数,返回的对象中存放具体的数据
          state: () => ({
              count: 0,
              isLogin: false 
          }),
          // getters表示过滤器的意思 - 也可以理解为计算属性
          getters: {
              // getters中操作state数据用state做参数
              double: (state) => (state.count + 1) * 2,
          },
          // actions表还是存放方法的地方
          actions: {
              // 方法中操作state数据用this
              increment() {
                  this.count++
              },
              changeStatus(bool:boolean) {
                  this.isLogin = bool
              }
          }
      })
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
    3. 使用仓库数据

      • 在组件中使用state数据

        1. 导入创建好的仓库

          import {useLoginStore} from '@/store/piniaStore'
          
          • 1
        2. 为了保证数据是响应式的,从pinia中解构storeToRefs方法

          import {storeToRefs } from 'pinia'
          
          • 1
        3. 通过导入的仓库名称,得到仓库

          const store = useLoginStore()
          
          • 1
        4. 将仓库使用storeToRefs变成响应式的,从中解构出要使用的数据

          let {isLogin, count } = storeToRefs(store)
          
          • 1
      • 在组件中使用getters - 跟state的使用方式一样,从响应式数据中解构就好

        let {double } = storeToRefs(store)
        
        • 1
      • 在组件中使用actions中的方法

        1. 导入仓库名称

          import {useLoginStore} from '@/store/piniaStore'
          
          • 1
        2. 根据仓库名称得到仓库

          const store = useLoginStore()
          
          • 1
        3. 从仓库中直接解构得到actions中要使用的方法就可以调用

          let {changeStatus} = store
          changeStatus(true)
          console.log(111, isLogin.value);
          
          • 1
          • 2
          • 3

    本博文缺失大量图片,严重影响内容完整性以及阅读体验,完整内容请前往本人菜鸡博客——许小墨のBlog

  • 相关阅读:
    MySQL调优参数配置详解
    【Linux】Top命令Load average及相关CPU检查查询
    大疆面试整理
    从转载阿里开源项目 Egg.js 技术文档引发的“版权纠纷”,看宽松的 MIT 许可该如何用?...
    JAVA:实现ternary search三元搜索算法(附完整源码)
    【第十一篇】- Git Gitee
    单片机原理期末复习笔记
    OVS DPDK VXLAN隧道处理
    数学建模算法与应用 插值与拟合
    ASO优化:关键词该怎么选
  • 原文地址:https://blog.csdn.net/qq_60306931/article/details/130899149