context 就是当前的vuex实例对象;它拥有实例的所有方法
打印context可以发现context就是一个小仓库,commit[提交mutation修改state],getter[计算属性],dispatch[派发action],state[当前仓库数据]
本例使用为实现删除选中的商品,取context的getter,dispatch
在store的action中:
使用promise.all()函数,传入的数组是删除每个商品的结果,result是一个promise对象,通过promise.all()函数判断是否全部都删除成功。
// 删除全部勾选的产品
deleteAllCheckedCart({getters,dispatch}){
// getters.cartList.cartInfoList获取购物车中所有产品,是一个数组
let promiseAll= [];
getters.cartList.cartInfoList.forEach(item => {
// 返回的是promise对象
let result = item.isChecked == 1? dispatch('deleteCartListBySkuId',item.skuId):'';
// 将每一次返回的Promise对象添加到数组当中
promiseAll.push(result);
});
// 只要全部的promise的对象都成功,返回结果为成功,有一个失败则返回失败
return Promise.all(promiseAll);
}
在vue组件的文件中删除选中的商品
//html样式
<a @click="deleteAllCheckedCart">删除选中的商品</a>
//method中
async deleteAllCheckedCart(){
try {
// 派发一个action
await this.$store.dispatch('deleteAllCheckedCart');
this.getData();
} catch (error) {}
}