【Vue3】Pinia状态管理

Pinia

      • pinia与Vuex的对比
          • pinia的介绍
          • pinia与Vuex区别:
          • pinia的使用
          • 使用准备步骤一:新建文件导入pinia
          • 使用准备步骤二:挂载pinia
      • 创建pinia的Store
          • 新建页面。创建对应的Store
          • 页面使用pinia的store
      • Pinia核心概念State
          • 操作State一
          • 重置state
          • 改变state
          • 替换state
      • Pinia核心概念Getters
          • 直接使用
          • getters使用当前页面其他getters
          • getters返回函数
          • getters使用别的store的数据
      • Pinia核心概念Actions
          • 基本使用
          • 异步请求

在这里插入图片描述

pinia与Vuex的对比

pinia的介绍
  • 本质是一个状态管理库,用于跨组件,页面进行状态共享
  • 用起来像组合式Api
  • 与Vuex相比,pinia提供了更简单的Api,具有更少的仪式,提供了Composition-API风格的API
  • 最重要的是,与TypeScript一起使用具有更可靠的类型推断支持
pinia与Vuex区别:
  • mutation不再存在
  • 更友好的TypeScript支持
  • modules的嵌套结构不再存在
  • 命名空间这些也不再存在
pinia的使用
  • 安装pinia
npm i pinia
使用准备步骤一:新建文件导入pinia

【Vue3】Pinia状态管理_第1张图片

使用准备步骤二:挂载pinia

【Vue3】Pinia状态管理_第2张图片

创建pinia的Store

新建页面。创建对应的Store
  • Store 是使用 defineStore() 定义的
  • 并且它需要一个唯一名称,作为第一个参数传递
  • 第一个参数是应用程序中 store 的唯一 id
  • 这个 name,也称为 id,是必要的,Pinia 使用它来将 store 连接到 devtools
  • 也建议将返回的函数命名为 use… 是跨可组合项的约定
    【Vue3】Pinia状态管理_第3张图片
页面使用pinia的store

【Vue3】Pinia状态管理_第4张图片

Pinia核心概念State

操作State一
  • 为了从 store 中提取属性时保持其响应性,你需要使用 storeToRefs()。
    【Vue3】Pinia状态管理_第5张图片
重置state
  • 你可以通过store上的$reset()方法将状态重置到其初始值
    【Vue3】Pinia状态管理_第6张图片
改变state
  • 除了直接使用store.xxx++,修改store,还可以调用$patch()方法进行同时修改多个值
  • 可以使用部分state对象同时修改应用多个更改
    【Vue3】Pinia状态管理_第7张图片
替换state
  • 可以使用$state属性设置为新对象来替换整个Store
    在这里插入图片描述

Pinia核心概念Getters

  • 相当于Store的计算属性
  • getters可以定义接收一个state作为参数的函数
直接使用

【Vue3】Pinia状态管理_第8张图片

  • 页面上直接使用即可
    【Vue3】Pinia状态管理_第9张图片
getters使用当前页面其他getters
  • 通过this来访问到当前store实例上所以的其他属性
    【Vue3】Pinia状态管理_第10张图片
getters返回函数

【Vue3】Pinia状态管理_第11张图片###

 <div>修改的getters:{{ homeStore.fungetters(1) }}</div>
getters使用别的store的数据

【Vue3】Pinia状态管理_第12张图片

Pinia核心概念Actions

  • 相当于组件中的methods
  • 可以使用defineStore()中的action属性定义,并且他们非常适合定义业务逻辑
  • 和getters一样,通过this访问
基本使用

【Vue3】Pinia状态管理_第13张图片
【Vue3】Pinia状态管理_第14张图片

异步请求

【Vue3】Pinia状态管理_第15张图片

你可能感兴趣的:(【Vue3】专栏,vue.js,javascript)