本文实例为大家分享了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://zxbcw.cn/post/203784/
- 转载请注明:必须在正文中标注并保留原文链接
- QQ群: PHP高手阵营官方总群(344148542)
- QQ群: Yii2.0开发(304864863)