我的组件 vue 是这样的:
<template>
...
</template>
<script>
import {mapActions, mapGetters} from 'vuex'
export default {
...
methods: {
add(event) {
this.addProduct(this.filters)
console.log(this.getStatusAddProduct)
if(this.getStatusAddProduct) {
...
}
},
...mapActions(['addProduct'])
},
computed: {
...mapGetters(['getStatusAddProduct'])
}
}
</script>
这段代码:this.addProduct(this.filters)
,它将在模块 vuex 中调用 addProduct 方法
我的模块 vuex 是这样的:
import { set } from 'vue'
import product from '../../api/product'
import * as types from '../mutation-types'
// initial state
const state = {
statusAddProduct: null
}
// getters
const getters = {
getStatusAddProduct: state => state.statusAddProduct
}
// actions
const actions = {
addProduct ({ dispatch, commit, state }, payload)
{
product.add(payload,
data => {
commit(types.ADD_PRODUCT_SUCCESS)
},
errors => {
commit(types.ADD_PRODUCT_FAILURE)
}
}
}
}
// mutations
const mutations = {
[types.ADD_PRODUCT_SUCCESS] (state){
state.statusAddProduct = true
},
[types.ADD_PRODUCT_FAILURE] (state){
state.statusAddProduct = false
}
}
export default {
state,
getters,
actions,
mutations
}
此代码:product.add(payload,
在模块 vuex 中,它将调用 api
像这样的api:
import Vue from 'vue'
export default {
add (filter, cb, ecb = null ) {
axios.post('/member/product/store', filter)
.then(response => cb(response))
.catch(error => ecb(error))
}
}
我的问题是,如果 vue 组件中的 add 方法运行,结果console.log(this.getStatusAddProduct)
为 null。如果产品成功添加,则结果console.log(this.getStatusAddProduct)
为真
我认为这是因为在运行时console.log(this.getStatusAddProduct)
,在 vuex 模块中添加产品的过程尚未完成。所以结果为空
console.log(this.getStatusAddProduct)
vuex模块中的进程完成后如何运行?