Action 相当于组件中的 method。它们可以通过 defineStore() 中的 actions 属性来定义。
定义演示
import { defineStore } from 'pinia'
export const useCounterStore = defineStore('counter',{
state : ()=>{
return {
count : 0
}
},
getters : {
doubleCount : (state)=>{
return state.count + 2;
}
},
actions : {
// 类似 getter,action 也可通过 this 访问整个 store 实例,
// 不同的是,action 可以是异步的,你可以在它们里面 await 调用任何 API,以及其他 action!
randomizeCounter : function(){
this.count = Math.round(100 * Math.random())
}
}
})
调用演示
<script setup>
import { storeToRefs } from 'pinia'
import { useCounterStore } from '/src/store/store'
const store = useCounterStore()
const { count } = storeToRefs(store)
const add = function(){
console.log(count.value);
store.count++;
}
</script>
<template>
<div>
<div>数值 : {{ count }}</div>
<div>数值 : {{ store.doubleCount }}</div>
<div>
<button @click="add">+ 1</button>
<button @click="store.randomizeCounter()">随机</button>
</div>
</div>
</template>
<style scoped>
</style>