getter 
Getter 完全等同于 store 的 state 的computed。
定义getter 
可以通过 defineStore() 中的 getters 属性来定义它们。推荐使用箭头函数,并且它将接收 state 作为第一个参数:
ts
export const useCounterStore = defineStore('counter', {
  state: () => ({
    count: 0,
  }),
  getters: {
    doubleCount: (state) => state.count * 2,
  },
})大多数时候,getter 仅依赖 state。不过,有时它们也可能会使用其他 getter。因此,即使在使用常规函数定义 getter 时,我们也可以通过 this 访问到整个 store 实例,但(在 TypeScript 中)必须定义返回类型。这是为了避免 TypeScript 的已知缺陷,不过这不影响用箭头函数定义的 getter,也不会影响不使用 this 的 getter。
ts
export const useCounterStore = defineStore('counter', {
  state: () => ({
    count: 0,
  }),
  getters: {
    // 自动推断出返回类型是一个 number
    doubleCount(state) {
      return state.count * 2
    },
    // 返回类型**必须**明确设置
    doublePlusOne(): number {
      // 整个 store 的 自动补全和类型标注 ✨
      return this.doubleCount + 1
    },
  },
})向 getter 传递参数 
Getter 只是幕后的计算属性,所以不可以向它们传递任何参数。你可以通过action实现
访问getter 
option store 
Pinia 在处理 getters 时,做了一层封装:
- 内部确实是 computed,但是对外暴露时,把.value自动“解包”了。
- 在你访问 store.doubleCount时,Pinia 拦截了属性读取,自动帮你返回getter.value。
- 所以在 store 上访问 getter,得到的就是 直接的值,而不是 Ref。
ts
export const useCountStore = defineStore('count', {
  state: () => ({ count: 0 }),
  getters: {
    doubleCount: (state) => state.count * 2,
  },
})ts
const store = useCountStore()
console.log(store.doubleCount) // 0 ✅ 直接就是 numbersetup store 
因为 setup 写法返回的就是你定义的内容,Pinia 不会再帮你 unwrap。
ts
console.log(store.doubleCount.value) // 需要 .valuets
export const useCountStore = defineStore('count', () => {
  const count = ref(0)
  const doubleCount = computed(() => count.value * 2)
  return { count, doubleCount }
})访问其他 store 的 getter 
想要使用另一个 store 的 getter 的话,那就直接在 getter 内使用就好
ts
import { useOtherStore } from './other-store'
export const useStore = defineStore('main', {
  state: () => ({
    // ...
  }),
  getters: {
    otherGetter(state) {
      const otherStore = useOtherStore()
      return state.localData + otherStore.data
    },
  },
})