繁体   English   中英

如何在Vuex的动作函数中使用变异函数?

[英]How use a mutation function in a action function in Vuex?

我有这个Vuex

export default new Vuex.Store({
  state: {
    userInfo: {
      nit_ID: { ID: '', Desc: '' },
      userName: { ID: '', Desc: '' },
      typeDocument: { ID: '', Desc: '' },
      document: '',
    },    
    globalPublicKey: 'ASDFGHJKL1234567890',
  },
  mutations: {    
    updateUserInfo(state, payload) {
      state.userInfo = payload;
    }, 
  },
  getters: {
    userInfo: (state) => { return state.userInfo; },
  },
  actions: {
    validateUserSession(context) {
      var valido = false;
      try {       
        let storageInfo = JSON.parse(
          sjcl.decrypt(context.state.globalPublicKey, localStorage.userInfo)
        );
        if (localStorage.userToken === storageInfo.token) {
          context.mutations.updateUserInfo(storageInfo);          
          valido = true;
        }
      } catch (e) {
          console.error(e);
      }
      return valido;
    },
  },
})

但问题是,我不能访问到mutation updateUserInfo()我知道这是很容易解决的,只能做updateUserInfo过程中我的动作,但问题是我如何使用一个mutation成一个action

在VueJS中,您可以通过调用context.commit来动作中调用变异 ,如下所示:

context.commit('mutationName', params)

如果未将参数传递给突变,则可以省略params

此处的更多信息: vuex.vuejs.org/guide/actions.html

实际上,您从任何地方都可以通过commit调用一个突变-但建议使用操作 (因此派出一个action )来依次提交数据(实际上是改变状态)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM