Pinia:Vue3.js的状态管理器

简介: Pinia:Vue3.js的状态管理器

不得不说,这个小菠萝很可爱呢


文档


doc:https://pinia.vuejs.org/

npm: https://www.npmjs.com/package/pinia

github: https://github.com/vuejs/pinia

安装


npm i pinia

示例

官网的文档,写的不是很清楚,有一些代码被省略了,对新手来说还是很坑的,我折腾了两天,第一个Demo算是run起来了。


平时习惯使用Vue2的options方式,所以以下示例,就以options API方式实现。


本示例环境及其版本号


package.json


{
  "name": "pinia-demo",
  "version": "1.0.0",
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "serve": "vite preview"
  },
  "dependencies": {
    "pinia": "^2.0.8",
    "vue": "^3.2.13",
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^2.0.1",
    "vite": "^2.4.1"
  },
  "engines": {
    "node": ">=12.22.6",
    "npm": ">=6.14.15"
  }
}

在Vue中使用Pinia


// src/main.js
import { createApp } from 'vue';
import { createPinia } from 'pinia'
const app = createApp(App);
app.use(createPinia())

定义store


// src/stores/counter.js
import { defineStore } from 'pinia'
export const useCounterStore = defineStore('counter', {
  // 数据 data
  state: () => {
    return { count: 0 }
  },
  // 计算属性 computed
  getters: {
    // 访问store的数据
    doubleCount: (state) => state.counter * 2,
    // 访问getters的数据
    doublePlusOne() {
      return this.doubleCount + 1
    },
  },
  // 修改数据的方法 methods
  actions: {
    increment() {
      this.count++
    },
  },
})

使用store


// src/components/Index.vue
import { mapState, mapActions } from 'pinia'
import { useCounterStore } from '@/stores/counter.js'
export default {
  computed: {
    ...mapState(useCounterStore, ['counter', 'doubleCount'])
  },
  methods: {
    ...mapActions(useCounterStore, ['increment'])
  }
}
相关文章
|
19天前
|
存储 JavaScript 前端开发
深入理解 Vuex:Vue.js 状态管理的利器
【10月更文挑战第11天】 深入理解 Vuex:Vue.js 状态管理的利器
21 2
|
25天前
|
JavaScript 前端开发 API
探索Vue.js 3的组合式API:一种更灵活的组件状态管理方式
【10月更文挑战第5天】探索Vue.js 3的组合式API:一种更灵活的组件状态管理方式
|
19天前
|
存储 缓存 JavaScript
深入探讨 Vuex:Vue.js 状态管理的最佳实践
【10月更文挑战第11天】深入探讨 Vuex:Vue.js 状态管理的最佳实践
17 0
|
22天前
|
存储 资源调度 JavaScript
vue.js【网络请求和状态管理】
vue.js【网络请求和状态管理】
|
3月前
|
资源调度 JavaScript API
使用 Pinia 掌握 Vue.js 中的状态管理
使用 Pinia 掌握 Vue.js 中的状态管理
|
3月前
|
JavaScript
Vue进阶篇(二)-彻底改变 Vue.js 状态管理:深入探讨Vue 3 Setup中的DefineModel
Vue进阶篇(二)-彻底改变 Vue.js 状态管理:深入探讨Vue 3 Setup中的DefineModel
|
3月前
|
存储 JavaScript 前端开发
Vue.js + Vuex:解锁前端复杂应用的神秘钥匙,探索状态管理的新境界!
【8月更文挑战第30天】Vue.js结合Vuex状态管理,为复杂前端应用提供了解锁高效与优雅的金钥匙。Vue.js凭借简洁的API和高效虚拟DOM更新机制广受好评,但在大规模应用中,组件间状态共享变得复杂。这时,Vuex通过中心化状态存储,使状态管理清晰可见,如同为Vue.js应用增添智慧大脑。例如,在购物车应用中,Vuex通过`state`、`mutations`、`actions`和`getters`清晰管理状态,简化组件间状态同步,减少耦合,确保单一状态源,使开发更加高效有序。在Vue.js的世界里,Vuex是一位智慧管家,让前端开发不仅高效,更成为一门艺术。
26 0
|
5月前
|
JavaScript 前端开发 程序员
探索Vue.js宝库:解锁基础知识与实用技能之门(1. 数据绑定与响应式 2. 条件与循环 3. 组件化开发;1. 路由管理与导航 2. 状态管理与Vuex 3. Vue.js的生命周期)
探索Vue.js宝库:解锁基础知识与实用技能之门(1. 数据绑定与响应式 2. 条件与循环 3. 组件化开发;1. 路由管理与导航 2. 状态管理与Vuex 3. Vue.js的生命周期)
47 1
|
4月前
|
JavaScript
文本,Pinia的使用,(0 , _stores_token_js__WEBPACK_IMPORTED_MODULE_1__.useTokenStore),接口中必须用引入store.js文件
文本,Pinia的使用,(0 , _stores_token_js__WEBPACK_IMPORTED_MODULE_1__.useTokenStore),接口中必须用引入store.js文件
|
6月前
|
JavaScript 前端开发
Vue.js中的状态管理:理解和使用Vuex
Vuex是Vue.js的一个状态管理库,它可以帮助我们更好地管理应用程序的状态。在Vue.js中,组件之间的通信往往需要借助于props和emit来完成,但是当应用程序的状态变得比较复杂时,这种方式就变得比较麻烦。Vuex可以帮助我们更好地管理状态,以及在组件之间共享状态。