详解vuex中的this.$store.dispatch方法
短信预约 -IT技能 免费直播动态提醒
vuex中的this.$store.dispatch方法
main.js
new Vue({
el:'#app',
router,
store,
render:h=>h(APP)
})
store/index.js
import Vue from 'vue'
import Vuex from 'vuex'
import app from './modules/app'
import user from '.modules/user'
import getters from '.getters'
import permission from './modules/permission'
Vue.use(Vuex)
const store=new Vuex.Store({
modules:{
permission,
app,
user
},
getters
})
export default store
在store/modules文件夹里的user.js,声明user并释放出来。
const user = {
state: {
token: '',
roles: null,
isMasterAccount:true,
},
mutations: {
SET_TOKEN: (state, token) => {
state.token ="Bearer " +token
},
},
actions: {
// 登录
Login({
commit
}, userInfo) {
return new Promise((resolve, reject) => {
login(userInfo.account, userInfo.password).then(x => {
if(x.status==200){
const tokenV = x.data.token.tokenValue
commit('SET_TOKEN', tokenV)
document.cookie=`AuthInfo=Bearer ${tokenV};path:/`;
token="Bearer "+tokenV;
//setToken("Bearer " +token)
resolve();
}
}).catch(error => {
console.log("登录失败")
reject(error)
})
})
},
}
}
export default user
注:必须要用commit(‘SET_TOKEN’, tokenV)
调用mutations
里的方法,才能在store
存储成功。
handleLogin() {
this.loading = true
this.$store.dispatch('Login', this.loginForm).then(() => {
this.$router.push({
path: '/manage/merchant/account'
}); //登录成功之后重定向到首页
this.loading = false
// this.$router.push({ path: this.redirect || '/' })
}).catch(() => {
this.loading = false
})
}
this.$store.dispatch(‘Login’, this.loginForm)
来调取store
里的user.js的login
方法,从而要更新。
vuex 中dispatch 和 commit 的用法和区别
dispatch:含有异步操作,例如向后台提交数据,写法: this.$store.dispatch('action方法名',值)
commit:同步操作,写法:this.$store.commit('mutations方法名',值)
到此这篇关于vuex中的this.$store.dispatch方法的文章就介绍到这了,更多相关vuex中this.$store.dispatch方法内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341