• pinia的基本特点

pinia同样是一个Vue

状态管理工具,它和vuex有很多相似的地方。本质上他是vuex团队核心成员开发的,在vuex上面提出了一些改进。与vuex相比,pinia去除了vuex中对于同步函数Mutations和异步函数Actions的区分。直接在Actions中便能够使用同步和异步方法(在vuex的开发计划中也将会除去同步和异步的区分)。其次相比于vuex,pinia对于typescript的支持性更好,友好的devTools支持,pinia只有1kb,简化了很多方法的写法。由于vuex比较完善,因此,pinia更加适合小型项目,vuex更加适合大型项目。

    • 基本配置和使用
//利用vue-cli创建一个pinia项目(这里选择创建vue3项目)
vue create pinia
//在项目中安装pinia
npm install pinia@next

项目中导入pinia

import { createApp } from 'vue'
import App from './App.vue'
import { createPinia } from 'pinia'
//需要注意的是从pinia中结构出来的createPinia是一个函数,挂载需要先调用执行
const app = createApp(App)
app.use(createPinia())
app.mount('#app')

配置状态管理专用文件,在根目录下创建一个store文件,并新建一个index.js文件

import {defineStore} from 'pinia';
export  const userTestStore = defineStore({//需要注意的是,defineStore返回的是一个回调方法id:'test',//test是该状态管理的唯一标志也可以使用defineStore(id,{});的形式state(){return {name:'hello pinia',age:20}       },getters:{testGetters(){return this.name+'...';//直接利用this便能够获取到里面的内容不需要使用state中间对象} },actions:()=>{addAge:function(){setInterval(()=>{this.age++;},1000)}}
})
    • pinia传参与调用

下面给出调用store里面的带参方法例子:

//在状态管理工具中定义addAge函数
actions:{addAge(gap){this.age+=gap;}}
//组件中导入对应状态管理工具
import { userTestStore } from "./store";
const store = userTestStore();
const { addAge } = store;//解构出store实例里面的addAge方法
<div>output age:{{ store.age }}</div>
<button @click="addAge(10)">click for add age</button>

demo 修改store值得五种方式,推荐使用action

//store-name.ts
export const enum Names {Test = 'Test'
}
// store.js
import { defineStore } from 'pinia'// defineStore 调用后返回一个函数,调用该函数获得 Store 实体
import { defineStore } from "pinia";
import { Names } from "./store-name";
//定义的defineStore(),并且它需要一个唯一的名称,Names.Test名称抽离出去作为第一个参数传递
export const useTestStore = defineStore(Names.Test, {state: () => ({ current: 1, name: '小满' }),//computed:修饰一些值getters: {},//methods:可以做同步异步,提交stateactions: {setCurrent(type: boolean) {//通过this指向属性if (!type) return falsethis.current++}}
})// 在vue3中使用
<template><div>pinia:{{ current }}---{{ Test.name }}<button @click="setCur">set</button></div>
</template>
<script lang="ts" setup>
import { useTestStore } from './store';const Test = useTestStore()
const current = computed(() => Test.current)
/*** state的五种方式修改值1.直接修改值Test.current=22.通过$patch修改,支持单个或多个属性修改Test.$patch({current:33})3.$patch工厂函数方式Test.$patch((state) => {state.current = 99;state.name = '范迪塞尔'})4.$state 缺点是必须修改整个对象Test.$state = { current: 88, name: '123' }5.actionTest.setCurrent()*/
const setCur = () => {// Test.current = 2// Test.$patch({ current: 33 })Test.$patch((state) => {state.current = 99;state.name = '范迪塞尔'})Test.$state = { current: 88, name: '123' }Test.setCurrent(true)
}
</script><style lang = "scss" scoped>
</style>

Vue3大菠萝pinia笔记相关推荐

  1. Vue基础+vue2+vue3 大合集笔记

    系列文章目录 之前没跟对up主,vue基础没打好:跟着尚硅谷从头第二次学Vue,收获了很多并且记下来 万字笔记,平常开发用的多的都在这了 如果有出错的地方请多多指教! 文章目录 系列文章目录 vue概 ...

  2. 大菠萝 Pinia 持久化方案 Pinia Persist Own

    在使用 Pinia 时,一直想找到一个可以持久化的插件,不过用了很多都不是很理想,所以抽空的时候,自己写了一个. 安装 # npm npm i pinia-persist-own # pnpm pnp ...

  3. vue3 + vite + ts + pinia + yarn

    Vue3 + Vite + TypeScript + Pinia + Yarn yarn 常用命令 vite 构建工具 vite 创建项目 Vue 3 vue 3 组件库 vue 文档 组合式 API ...

  4. 信息系统项目管理师-学习方法、重难点、10大知识领域笔记

    场景 学习方法.重难点.10大知识领域笔记有关的知识整理. 考试科目和分值分布 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序 ...

  5. 大数据学习笔记:Hadoop生态系统

    文章目录 一.Hadoop是什么 二.Hadoop生态系统图 三.Hadoop生态圈常用组件 (一)Hadoop (二)HDFS (三)MapReduce (四)Hive (五)Hbase (六)Zo ...

  6. 大一微积分笔记整理_大一高数笔记.doc

    大一高数笔记.doc 导数与极限(一)极限1.概念(1)自变量趋向于有限值的函数极限定义(定义)Axfa)(lim0,,当||0ax时,有|)(|Axf.(2)单侧极限左 ...

  7. 大数据开发笔记(九):Flink综合学习

      ✨大数据开发笔记推荐: 大数据开发面试知识点总结_GoAI的博客-CSDN博客_大数据开发面试​本文详细介绍大数据hadoop生态圈各部分知识,包括不限于hdfs.yarn.mapreduce.h ...

  8. 大数据开发笔记(九):Flink基础

      ✨大数据开发笔记推荐: 大数据开发面试知识点总结_GoAI的博客-CSDN博客_大数据开发面试​本文详细介绍大数据hadoop生态圈各部分知识,包括不限于hdfs.yarn.mapreduce.h ...

  9. 大数据开发笔记(四):Hive分区详解

      ✨大数据开发笔记推荐: 大数据开发面试知识点总结_GoAI的博客-CSDN博客_大数据开发面试​本文详细介绍大数据hadoop生态圈各部分知识,包括不限于hdfs.yarn.mapreduce.h ...

最新文章

  1. 从Promise来看JavaScript中的Event Loop、Tasks和Microtasks
  2. 代码覆盖率工具 Istanbul 入门教程
  3. 记一次程序员在办公室里的“撕逼”经历
  4. Linux Shell 常用命令与目录分区的学习总结
  5. SQL 语句执行顺序
  6. 文件另存为时名称会改变_易经:人处在困境时,不要焦虑,改变固定习惯,就会迎来转机...
  7. H - Cow Contest(floyd的传递闭包性)
  8. cad文件格式(dwg、dxf、dwf、dws等)转其他格式(svg、,tiff、jpej、png、xml、pdf等)的四种方式(java)
  9. 人民币大写转换-Java 8
  10. vb 复制 剪贴板 html,VB.NET中调用系统的剪贴板完成数据的复制和粘贴
  11. 迅雷方舟与花瓣:不一样的“瀑布流”
  12. 中国移动:流量不限。有下文了。
  13. 鸿蒙手机开发者申请,鸿蒙OS 2.0手机开发者Beta公开招募上线:P40/Mate 30可申请
  14. 排列组合问题,01234 五个数能组成多少个互不相同的三位数,且数字不重复。
  15. Android nfc模块读写MifareClassic卡50
  16. 2020 我的计算机保研历程
  17. 99.9%的努力毁于0.1%的失误
  18. vue-cli安装、初始化项目
  19. 2018.7.10 无线充电方案 调试
  20. 多线程的应用场景以及其实现方式

热门文章

  1. SI信号仿真及软件 HyperLynx
  2. echarts柱状图改变标签的位置及柱状图颜色
  3. 打印机使用的驱动语言
  4. 首涂[A020]第二十套模板最终版 苹果CMS V10
  5. 有个漂亮女朋友是种怎样的体验?爬取知乎2.2亿的阅读量的话题
  6. 图片下载_二维码生成
  7. Web 前端必会的 PhotoShop 技能
  8. java实现发送qq邮箱验证码
  9. Java集合 HashSet 和 HashMap
  10. 百度地图覆盖物OverlayOptions