定义一个仓库:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| import { defineStore } from "pinia" import { Names } from "./store-name"
export const useTestStore = defineStore(Names.TEST, { state: () => ({ current: 1, name: "yajue" }),
actions: { setCurrent(str:string) { this.name += str this.current++ } } })
|
State中的值有五种修改方式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| <template> <div> pinia: {{ Test.current }} --- {{ Test.name }} <button @click="change">change</button> </div> </template>
<script setup lang="ts"> import { useTestStore } from "./store"
const Test = useTestStore()
// 修改state的值 有五种方法 const change = ()=> { // 方法1 直接修改(VueX里则不允许直接修改) // Test.current++
// 方法2 $patch 对象形式 批量修改 不常用 // Test.$patch({ // current: Test.current+1, // name: Test.name+"yajue" // })
// 方法3 $patch 函数形式 批量修改 增加业务 参数state就是store里的state // Test.$patch((state:any)=> { // if(state.current%2==1) { // state.name += " " // } else { // state.name += "yajue" // } // state.current++ // })
// 方法4 直接赋对象值 改变对象引用 不常用 // Test.$state = { // current: 114514, // name: "yjsp" // }
// 方法5 借助action修改 Test.setCurrent(" oh my god") } </script>
|