官方文档:pinia.web3doc.top/
What is Pinia ?
Pinia
?是一个状态管理工具,它和?Vuex
?一样为?Vue
?应用程序提供共享状态管理能力。Vue3
?一样,它实现状态管理有两种语法:选项式API
?与?组合式API
,我们学习组合式API语法。Vue2
?也支持?devtools
,当然它也是类型安全的,支持?TypeScript
Why should I use Pinia?
Vuex
?一个store
嵌套多个modules
,结构复杂。小结:
香
掌握:实用Pinia使用,管理计数器的状态
使用步骤:
yarn add pinia
# or
npm i pinia
import { createApp } from 'vue'
+import { createPinia } from 'pinia'
import App from './App.vue'
const app = createApp(App)
+ const pinia = createPinia()
+ app.use(pinia)
app.mount('#app')
import { defineStore } from "pinia"
import { computed, ref } from "vue"
export const useCounterStore = defineStore("counter", () => {
return {}
})
<script setup lang="ts">
import { useCounterStore } from "./store/counter"
// store中有状态和函数
const store = useCounterStore()
</script>
const count = ref(100)
const doubleCount = computed(() => count.value * 2)
const update = () => count.value++
const asyncUpdate = () => {
setTimeout(() => {
count.value++
}, 1000)
}
return { count, doubleCount, update, asyncUpdate }
<template>
APP {{ store.count }} {{ store.doubleCount }}
<button @click="store.update()">count++</button>
<button @click="store.asyncUpdate()">async update</button>
</template>
总结:
const useXxxStore = defineStore('id',函数)
?创建仓库得到使用仓库的函数Vuex | Pinia |
---|---|
state | ref ?和?reactive 创建的响应式数据 |
getters | computed ?创建的计算属性 |
mutations 和 actions | 普通函数,同步异步均可 |
Pinia
?的状态管理基本使用掌握:使用 storeToRefs 解决解构仓库状态丢失响应式的问题
问题:
回忆:
toRefs
?保持结构后数据的响应式方案:
storeToRefs
?解决解构仓库状态丢失响应式的问题代码:
import { storeToRefs } from 'pinia'
const store = useCounterStore()
const { count, doubleCount } = storeToRefs(store)
小结:
storeToRefs