• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Pinia四和使用getters

武飞扬头像
庇耳拉海莱
帮助1

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>
      
    • 学新通

这篇好文章是转载于:编程之路

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 编程之路
  • 本文地址: /boutique/detail/tanhhcjghj
系列文章
更多 icon
同类精品
更多 icon
继续加载