Pinia学习笔记之--核心概念Getters

Getters

getterStore状态的计算值完全相同。它们可以用defineStore()中的getters属性来定义。它们接收state作为第一个参数,以鼓励使用箭头函数:

export const  useStore = defineStore('main', {
    state: () => ({
        counter: 0
    }),
    getters: {
        doubleCount: (state) => state.counter * 2
    }
})

大多数时候,getter只依赖于状态,但是,它们可能需要使用其他getter。因此,当定义一个常规函数时,我们可以通过这个函数访问整个store实例,但需要定义返回的类型(在TypeScript中)。这是由于TypeScript中的一个已知限制,不会影响用箭头函数定义的getter,也不会影响不使用Thisgetter:

export const useStore = defineStore('mian', {
    state: (() => {
        counter: 0
    }),
    getters: {
        // 自动推断类型为nubmer
        doubleCount(state) {
            return state.counter * 2
        },
        // 返回的类型必须被设置
        doublePlusOne(): number {
            // autocompletion and typings for the whole store
            return this.doubleCount + 1
        }
    }
})

然后你可以直接访问store实例getter