<template>
<div @click="change">
直接通过实例.就可以获取
{{ store.count }}---- {{ store.sex }}
</div>
</template>
<script setup lang='ts'>
import { useStore } from '../store'
// defineStore返回的是个hook,需要实例化
const store = useStore()
const change = () => {
// 第一种方式,直接修改
// store.count++
// 第二种方式,通过patch的对象修改
// store.$patch({ count: 3 })
// 第三种方式,通过patch的函数修改
// store.$patch((state) => {
// state.count = 3
// })
// 第四种方式,通过$state修改
// store.$state.count = 3
// 第五种方式,通过$state赋值会完全覆盖,且属性必须完全一致
// store.$state = {
// count:4,
// sex:'男'
// }
// 第六种方式,通过调用action的方式
// store.increment()
store.updataCount(5) // 通过传参的方式
}
</script>
<style scoped lang='scss'>
</style>
import {defineStore} from 'pinia'
import {StoreName} from './store-name'
// StoreName是id,用于区分不同的store,自定义即可
export const useStore = defineStore(StoreName.Test, {
state: () => ({
count: 0,
sex: '顶顶顶'
}),
getters: {
},
actions: {
increment() {
this.count++
},
// 不可以写箭头函数,否则指向不正确
updataCount(count: number) {
this.count = count
}
},
})