[pinia快速入门]3.Getter

pinia中的getter和vue中计算属性一样,它可以在获取state的值时做一些处理。
我们还是以实际的例子来学习,在前面写的例子中,我们有显示用户的手机号码,现在有一个新需求,就是显示用户的手机号码时,中间四位要变成星号,这样来保护一些用户的隐私。
这个时候,我们就可以定义一个getter,由它来处理手机号码:

import { defineStore } from 'pinia'
import { loginApi } from '../api/login'
export const useProfileStore = defineStore('profile', {
  state() {
    return {
      userName: '',
      phone: '',
      avatar: '',
    }
  },
  actions: {
    login(userName, password) {
      loginApi(userName, password)
        .then((res) => {
          this.$patch({
            userName: res.userName,
            phone: res.phone,
            avatar: res.avatar,
          })
        })
        .catch((err) => {
          console.log(err)
        })
    },
  },
  getters: {  // 新增
    phoneHidden(state) {
      return state.phone.toString().replace(/^(\d{3})\d{4}(\d{4})$/, '$1****$2')
    },
  },
})

我们在App.vue的模板中绑定的值就要改成phoneHidden了

<template>
  <div>用户名是: {{ profileStore.userName }}</div>
  <div>手机号是: {{ profileStore.phoneHidden }}</div>
</template>

页面上显示:

用户名是: 林哥
手机号是: 188****8888

这就是getter的基本用法了,是不是跟computed一样

getter接受参数

现在我们又增加了一个需求,手机号码要显示区号,比如我们中国区的区号是+86,这个区号需要通过参数传给getter,
这时候,getter就不是直接返回一个值了,而是返回一个函数,这个函数接收参数:

  getters: {
    phoneHidden(state) {
      return state.phone.toString().replace(/^(\d{3})\d{4}(\d{4})$/, '$1****$2')
    },
    phoneHiddenPlus() { // 新增
      return (prefix) => prefix + this.phoneHidden
    },
  },

在App.vue中使用这个getter时,要把它当做参数来调用

<template>
  <div>用户名是: {{ profileStore.userName }}</div>
  <div>手机号是: {{ profileStore.phoneHiddenPlus('+86') }}</div>
</template>

这时,页面上显示:

用户名是: 林哥
手机号是: +86188****8888

在这个例子中,我们看到的phoneHiddenPlus这个getter中,直接使用this可以访问到这个store中的其他getter。

getter的使用就是这些了,记住和computed的作用一样就行了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容