vuex实现的简单购物车功能示例
本文实例讲述了vuex实现的简单购物车功能。分享给大家供大家参考,具体如下:
购物车组件
vuex-shopCart
已选商品
商品列表
id 名称 价格 操作 {{item.id}} {{item.name}} {{item.price}}
本文实例讲述了vuex实现的简单购物车功能。分享给大家供大家参考,具体如下:
购物车组件
vuex-shopCart
已选商品
商品列表
id 名称 价格 操作 {{item.id}} {{item.name}} {{item.price}}
选中商品列表
id 名称 价格 数量 操作 {{item.id}} {{item.name}} {{item.price}} {{item.num}} 删除 暂无数据 总数:{{totalNum}} 总价格:{{totalPrice}} 清空购物车
vuex创建
npminstallvuex--save,创建vuex文件夹,在文件夹中创建store.js,引入vuex;
importVuefrom"vue";
importVuexfrom'vuex';
importcartfrom"./modules/cart";
Vue.use(Vuex);
exportdefaultnewVuex.Store({
modules:{
cart
}
})
建立一个模块文件夹modules,里面创建创建当个store模块,然后默认输出,在store.js中引入;
conststate={
shop_list:[{
id:11,
name:'鱼香肉丝',
price:12,
},{
id:22,
name:'宫保鸡丁',
price:14
},{
id:34,
name:'土豆丝',
price:10
},{
id:47,
name:'米饭',
price:2
},{
id:49,
name:'蚂蚁上树',
price:13
},
{
id:50,
name:'腊肉炒蒜薹',
price:15
}],
add:[]
}
constgetters={
//获取商品列表
getShopList:state=>state.shop_list,
//获取购物车列表
addShopList:state=>{
returnstate.add.map(({id,num})=>{
letproduct=state.shop_list.find(n=>n.id==id);
if(product){
return{
...product,
num
}
}
})
},
//获取总数量
totalNum:(state,getters)=>{
lettotal=0;
getters.addShopList.map(n=>{
total+=n.num;
})
returntotal;
},
//计算总价格
totalPrice:(state,getters)=>{
lettotal=0;
getters.addShopList.map(n=>{
total+=n.num*n.price
})
returntotal;
},
}
constactions={
//加入购物车
addToCart({commit},product){
commit('addCart',{
id:product.id
})
},
//清空购物车
clearToCart({commit}){
commit('clearCart')
},
//删除单个物品
deletToShop({commit},product){
commit('deletShop',product)
}
}
constmutations={
//加入购物车
addCart(state,{id}){
letrecord=state.add.find(n=>n.id==id);
if(!record){
state.add.push({
id,
num:1
})
}else{
record.num++;
}
},
//删除单个物品
deletShop(state,product){
state.add.forEach((item,i)=>{
if(item.id==product.id){
state.add.splice(i,1)
}
})
},
//清空购物车
clearCart(state){
state.add=[];
}
}
exportdefault{
state,
getters,
actions,
mutations
}
希望本文所述对大家vue.js程序设计有所帮助。