如何在 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[=30 从 action 调用 mutation =],像这样:
context.commit('mutationName', params)
params 可以省略,如果没有参数传递给突变。
更多相关信息:vuex.vuejs.org/guide/actions.html
实际上,您可以从任何地方使用 commit 调用突变 - 但建议使用 actions(因此 dispatch一个动作) 反过来 提交 数据(实际上改变了状态)。
我有这个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[=30 从 action 调用 mutation =],像这样:
context.commit('mutationName', params)
params 可以省略,如果没有参数传递给突变。
更多相关信息:vuex.vuejs.org/guide/actions.html
实际上,您可以从任何地方使用 commit 调用突变 - 但建议使用 actions(因此 dispatch一个动作) 反过来 提交 数据(实际上改变了状态)。