vue3:16、Pinia的基本语法
选项式APi
组合式API
src/store/counter.js
import { defineStore } from "pinia";
import { computed, ref } from "vue";
export const userCounterStore = defineStore("counter",()=>{
//声明数据 state - count
const count = ref(100)
//声明操作数据的方案 action (普通函数)
function addCount(){
count.value++
}
function subCount(){
count.value--
}
//声明基于数据派生的计算属性 getters
const double = computed(() => count.value*2)
//声明数据 state -msg
const msg = ref('你好 pinia')
return {
count,
double,
addCount,
subCount,
msg
}
})
根组件
<script setup>
import Son1Com from '@/components/Son1Com.vue';
import Son2Com from '@/components/Son2Com.vue';
import {userCounterStore} from '@/store/counter'
const counterStore = userCounterStore()
</script>
<template>
<h3>
APP.vue根组件
<br>
{{ counterStore.count }}
<br>
{{ counterStore.msg }}
</h3>
<Son1Com></Son1Com>
<Son2Com></Son2Com>
</template>
子组件
<script setup>
import { userCounterStore } from '@/store/counter'
const counterStore = userCounterStore()
</script>
<template>
<div>Son2 {{ counterStore.count }} - {{ counterStore.double }}</div>
<button @click="counterStore.subCount">-</button>
</template>