vuex中 如何使用 mapMutations、mapState

 

首先vue中的store.js中的内容应该大家都熟悉  我还是贴一下代码吧

import Vue from 'vue'
import Vuex from 'vuex'
import persistedState from 'vuex-persistedstate'
Vue.use(Vuex)
export default new Vuex.Store({
  state: {
    userInfo: null,
    token: '' 
  },
  mutations: {
    saveToken(state, token) {
      state.token = token
    },
    saveUserInfo(state, info) {
      state.userInfo = info
    },
    clearUserInfo(state) {
      state.userInfo = null
    }
  },
  actions: {},
  modules: {},
  plugins: [persistedState({ key: 'openrationManagement' })]
})

这个应该是最基础的代码 

就两个值  一个保存用户信息,一个清理用户信息  还有一个保存toekn 的信息

那我们要如何使用呢?

其实最开始我的写法是这样的

//这是提交保存用户信息;其实就一句话搞定
this.$store.commit('saveUserInfo', this.form)
//那我们要使用userInfo 如何使用呢?
//也是一句话搞定
this.$store.state.userInfo  //取出来赋值就可以了
其实很简单  



那为啥我们要用 mapMutations、mapState呢  这是辅助函数

mapMutations 辅助函数将组件中的 methods 映射为 store.commit 调用(需要在根节点注入 store)

先在组件中引入 

import { mapMutations, mapState } from 'vuex'

然后在组件中调用

methods: {
    ...mapMutations(['clearUserInfo']),
    handleCommand(command) {
      if (command == 'logout') {
        loginOut().then(res => {
          if (res.code == 200) {
            this.clearUserInfo()
            this.$router.push('/')
          }
        })
      }
    }
  },

在methods中引用  类似上文中提到的

this.$store.commit('clearUserInfo')  

将this.clearUserInfo映射成为 this.this.$store.commit('clearUserInfo')

好 

那我们需要把这个字段取出来使用  怎么办呢?

computed: {
    //使用vuex中的 先调用引入mapState 然后取出值使用  使用方式: this.userinfo
    ...mapState(['token', 'userInfo'])
  }

使用的时候 就是 this.userInfo 就行了  

容易忘记 所以记下来

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值