Pinia(四)了解和使用getters

Vue Store 中的 Getters 使用详解
部署运行你感兴趣的模型镜像

Getters

  1. getters 就像计算属性一样, 通过 defineStoregetters 配置项来定义. 每一个 getter 都是一个函数, 这个函数接收 state 作为第一个参数, 官网鼓励使用箭头函数

    • export const userStore = defineStore('user', {
        state: () => {
          return {
            color: 'red' as string,
            userList: [] as UserInfo[],
            user: {
              name: 'tom',
              age: 18
            } as UserInfo | null
          }
        },
        getters: {
          doubleAge: (state) => {
            return state.user.age * 2;
          }
        }
      })
      
    • 大多数时间, getter 都仅仅依赖于 state, 但是有时候也会依赖其他 getter. 所以呢, 如果 getter 定义为非箭头函数就可以通过 this 拿到整个 store 实例, 但是由于 TS 又必须为函数返回值定义类型. 但是这并不影响将 getters 定义为箭头或者, 也不影响不使用 thisgetters
      • getters: {
          doubleAge: (state) => {
            return state.user.age * 2;
          },
        
          doubleAgePlus3(): number {
            return this.doubleAge + 3;
          }
        }
        
  2. 在页面或者组件使用 getters

    • 直接通过 store 实例对象
      • import { userStore } from '../store/user';
        const user = userStore();
        
      • <h2>{{ user.color }} | 【{{ user.doubleAge }}】</h2>
        
      • 在这里插入图片描述
  3. getters 传递参数

    • getters 可以通过返回一个函数 A 来接收参数, 这个 A 的返回值也就是 getter 的值.

      • getters: {
          plusAgeBy: (state) => {
            return (moreAge: number) => state.user.age + moreAge
          }
        }
        
      • <h2>{{ user.color }} | 【{{ user.doubleAge }}】 | 【{{ user.plusAgeBy(10) }}】</h2>
        
      • 在这里插入图片描述
    • 📕如果传递参数, getters 就不会再缓存了❗❗❗.

  4. 使用其他 store 中的 getters

    • 直接在 getter 内部使用即可
    • import { useCounterStore } from './index'
      
      getters: {
        addCounterFromOtherStore: (state) => {
          const useCounter = useCounterStore();
          return state.user.age + useCounter.count;
        }
      }
      
    • <h2>{{ user.addCounterFromOtherStore }}</h2>
      
    • 在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值