项目中getter的用法(解构)

仿登录的时候,拿到用户信息,改变state里的数据,再计算调用该数据

store目录结构

在这里插入图片描述
index.js

import Vue from 'vue'
import Vuex from 'vuex'
import state from './state'
import mutations from './mutations'
import getters from './getters'

Vue.use(Vuex)

const store = new Vuex.Store({
  state,
  getters,
  mutations
})

export default store

state.js 存放数据

export default {
  userInfo: '',
  userStatus: '', // 0 普通, 1 VIP, 2 高级VIP
  vipLevel: ''
}

mutation.js 接收改变数据

export default {
  login (state, v) {
    state.userInfo = v
  },
  setMemberInfo (state, v) {
    state.userStatus = v.userStatus
    state.vipLevel = v.vipLevel
  }
}

getters.js 像计算属性

export default {
  memberInfo (state) {
    switch (state.userStatus) {
      case 0:
        return '普通会员'
      case 1:
        return 'vip会员'
      case 2:
        return `高级V${state.vipLevel}会员`
      default:
        return '普通会员'
    }
  }
}

获取用户信息,改变state里的数据

login.vue

<button @click="login">登录</button>

login: function () {
  // 改变state里的值 this.$store.commit('mutations方法名',值)
  this.$store.commit('setMemberInfo', {
    userStatus: 1,
    vipLevel: 0
  })
  this.$router.push('/') // 跳首页
}

在页面中计算调用该数据

方法一)直接调用
index.vue

 <!-- 获取getters里计算过的数据 -->
 <span>{{this.$store.getters.memberInfo}}用户</span>

方法二)解构获取
index.vue

<!-- 获取getters里计算过的数据 -->
<span>用户名{{userInfo.username}}</span>
<span>{{memberInfo}}用户</span>
<button @click="goLogin">跳登录页</button>

import { mapGetters, mapState } from 'vuex' // 1)引入map

computed: {
   // 2)解构map
   ...mapState(['userInfo', 'userStatus', 'vipLevel']),
   ...mapGetters(['memberInfo'])
 }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值