vue.js - 如何从 store.js 调用组件方法
问题描述
我有 Login.vue 组件,它有方法 postData()
postData() {
this.$store.dispatch('doLogin', fdata)
},
doLogin 在 store.js 中
actions: {
doLogin({ commit }, loginData) {
commit('loginStart');
axios.post(this.state.apiURL+'/login', {
...loginData
})
.then(response => {
commit('loginStop', null);
commit('updateAccessToken', response.data.access_token);
})
.catch(error => {
commit('loginStop', error);
})
},
如何从 router.js 调用其他组件中的方法,让我们再说一遍 Login.vue?
我通常希望调用 Toast,它是 Login.vue 方法中的引导程序。
任何想法?
解决方案
Login.vue 组件方法
this.$store.dispatch('doLogin', fdata).then(response => {
console.log("response from promise:",response)
}, error => {
this.makeToast(true, error, 'danger', 'b-toaster-top-center')
console.error("Got error:",error)
})
store.js 动作
doLogin({ commit }, loginData) {
return new Promise((resolve, reject) => {
console.log("store - doLogin", loginData)
commit('loginStart');
axios.post(this.state.apiURL+'/login', {
...loginData
})
.then(response => {
localStorage.setItem('accessToken', response.data.access_token);
commit('loginStop', null);
commit('updateAccessToken', response.data.access_token);
router.push('/profile');
resolve(response);
})
.catch(error => {
console.log('error', error)
commit('loginStop', error);
commit('updateAccessToken', null);
reject(error)
})
})
},
推荐阅读
- java - 为什么 System.getenv() 从 .bat 文件运行时返回 null?
- python - 类型错误:predict() 缺少 1 个必需的位置参数:'X'
- javascript - 如何在 javascript 中返回变量之前将 navigator.geolocation.getCurrentPosition() 中的纬度和经度存储到变量中
- excel - Excel Online:在同一行中的单元格更改时添加时间戳
- php - ACF 排序问题
- python - 如何使用正则表达式返回一个带有匹配项和分隔符的字符串?
- php - 如何使用php解析json格式?
- html - 使用 CSS 设计眼镜形状
- javascript - 通过深层嵌套键映射重复项后获取整个对象数组
- css - css 网格模板列元素或制作 2 / 1