本文实例为大家分享了vuex实现购物车功能的具体代码,供大家参考,具体内容如下
先看效果:
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
< template >
< div class = "Home" >
< h1 >vuex购物车案例</ h1 >
< add-from ></ add-from >
< shop-cart ></ shop-cart >
</ div >
</ template >
< script >
import AddFrom from './Add.vue'
import ShopCart from './ShopCart.vue'
// @ is an alias to /src
// import HelloWorld from '@/components/HelloWorld.vue'
export default {
name: 'Home',
components: {
AddFrom,
ShopCart
},
};
</ script >
< style >
table {
width: 800px;
margin: 0 auto;
border: 1px solid #ccc;
border-spacing: 0;
}
tbody th,
tbody td {
border: 1px solid #ccc;
text-align: center;
}
h1{
text-align: center;
}
.add{
width: 800px;
margin: 0 auto;
}
</ style >
|
父组件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
< template >
< div class = "add" >
< div class = "from-group" >
< label for = "" >商品编号</ label >
< input type = "text" v-model = "shop.id" placeholder = "请输入商品编号" >
</ div >
< div class = "from-group" >
< label for = "" >商品名称</ label >
< input type = "text" v-model = "shop.name" placeholder = "请输入商品名称" >
</ div >
< div class = "from-group" >
< label for = "" >商品价格</ label >
< input type = "text" v-model = "shop.price" placeholder = "请输入商品价格" >
</ div >
< div class = "from-group" >
< label for = "" >商品数量</ label >
< input type = "text" v-model = "shop.count" placeholder = "请输入商品数量" >
</ div >
< div class = "from-group" >
< button @ click = "add" >添加商品</ button >
</ div >
</ div >
</ template >
< script >
export default {
name: 'add',
data() {
return {
shop:{}
};
},
methods:{
add(){
this.$store.dispatch("addShopList",this.shop)
this.shop = {
id:"",
name:"",
price:"",
count:""
}
}
}
};
</ script >
< style scoped>
.add{
width: 800px;
text-align: center;
}
</ style >
|
```bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
< template >
< div class = "Shop-Cart" >
< table >
< thead border>
< tr >
< th >商品编号</ th >
< th >商品名称</ th >
< th >商品价格</ th >
< th >商品数量</ th >
< th >小计</ th >
< th >操作</ th >
</ tr >
</ thead >
< tbody v-if="shop.length > 0">
< tr v-for = "(i, e) in shop" :key = "e" >
< td >{{ i.id }}</ td >
< td >{{ i.name }}</ td >
< td >{{ i.price }}</ td >
< td >
< button @ click = "add(e)" >+</ button >
< input type = "text" v-model = "i.count" />
< button @ click = "delet(e)" >-</ button >
</ td >
< td >¥{{ i.price * i.count }}</ td >
< td >< button @ click = "del(e)" >删除</ button ></ td >
</ tr >
</ tbody >
< tfoot >
< tr >
< td colspan = "6" align = "right" >总计:{{ total }}</ td >
< button @ click = "clear" >清除购物车</ button >
</ tr >
</ tfoot >
</ table >
</ div >
</ template >
< script >
export default {
name: 'Shop-Cart',
components: {},
data() {
return {};
},
computed: {
shop() {
return this.$store.getters.getlist;
},
total() {
return this.$store.getters.getShopTotal;
}
},
methods: {
del(e) {
// this.$store.dispatch()
this.$store.dispatch('remoteList', e);
},
add(e) {
this.$store.dispatch('addList', e);
},
delet(e) {
this.$store.dispatch('deleteList', e);
},
clear() {
this.$store.dispatch('clearList', []);
}
}
};
</ script >
|
vuex组件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
list: [{
id: 1,
name: "哇哈哈" ,
price: 3,
count: 0
},
{
id: 2,
name: "哇哈" ,
price: 3,
count: 0
}
]
},
getters: {
//获取购物车数据
getlist(state) {
return state.list
},
//商品的总价
getShopTotal(state,index) {
let result = 0;
state.list.forEach((item, index) => {
result += item.price * item.count
})
return result
},
},
mutations: {
//删除购物车单个数据
remoteList(state,index) {
state.list.splice(index, 1);
console.log( "aaa" ,state)
},
//商品数量增加
addList(state, index) {
state.list[index].count++;
},
//商品数量减少
deleteList(state, index) {
state.list[index].count--;
if (state.list[index].count<=0){
state.list[index].count = 0
return ;
}
},
//清除购物车
clearList(state, arr) {
state.list = arr
},
addShopList(state,shop){
state.list.push(shop)
}
},
//使用actions调用mutations方法
actions: {
remoteList({
commit
}, index) {
commit( "remoteList" , index)
},
addList({
commit
}, index) {
commit( "addList" , index)
},
deleteList({
commit
}, index) {
commit( "deleteList" , index)
},
clearList({
commit
}, arr) {
commit( "clearList" , arr)
},
addShopList({commit},shop){
commit( "addShopList" ,shop)
}
},
modules: {}
})
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/dongdongaa0/article/details/111304266