這篇“如何用vuex代碼實現(xiàn)簡單的購物車功能”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“如何用vuex代碼實現(xiàn)簡單的購物車功能”文章吧。
在泗洪等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、網(wǎng)站設(shè)計 網(wǎng)站設(shè)計制作按需規(guī)劃網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都全網(wǎng)營銷,成都外貿(mào)網(wǎng)站建設(shè)公司,泗洪網(wǎng)站建設(shè)費用合理。
文件目錄如下:
購物車組件
<template> <div> <h1>vuex-shopCart</h1> <div class="shop-listbox"> <shop-list /> </div> <h2>已選商品</h2> <div class="shop-cartbox"> <shop-cart /> </div> </div> </template> <script> import shoList from "./shop-list" import shopCart from "./shop-cart" export default { name: "shop", components: { "shop-list" : shoList, "shop-cart" : shopCart } } </script> <!-- Add "scoped" attribute to limit CSS to this component only --> <style scoped> </style>
商品列表
<template> <div class="shop-list"> <table> <tr class="shop-listtitle"> <td>id</td> <td>名稱</td> <td>價格</td> <td>操作</td> </tr> <tr v-for = "item in shopList" class="shop-listinfo" :key="item.id"> <td>{{item.id}}</td> <td>{{item.name}}</td> <td>{{item.price}}</td> <td> <button @click="addToCart(item)">加入購物車</button> </td> </tr> </table> </div> </template> <script> import {mapGetters,mapActions} from "vuex"; export default { name : "shopList", computed: { ...mapGetters({ shopList:"getShopList", }) }, methods: { ...mapActions(["addToCart"]) }, } </script>
選中商品列表
<template> <div class="shop-list"> <table> <tr class="shop-listtitle"> <td>id</td> <td>名稱</td> <td>價格</td> <td>數(shù)量</td> <td>操作</td> </tr> <tr v-for="item in cartData" class="shop-listinfo" :key="item.id"> <td>{{item.id}}</td> <td>{{item.name}}</td> <td>{{item.price}}</td> <td>{{item.num}}</td> <td><button class="shop-dele dele-btn" @click="deleteShop(item)">刪除</button></td> </tr> <tr v-if="cartData.length <= 0"> <td colspan="5">暫無數(shù)據(jù)</td> </tr> <tr> <td colspan="2">總數(shù):{{totalNum}}</td> <td colspan="2">總價格:{{totalPrice}}</td> <td><button class="dele-cart dele-btn" @click="clearCart">清空購物車</button></td> </tr> </table> </div> </template> <script> import {mapGetters,mapActions} from "vuex" export default { name : "shopCart", data(){ return{ } }, computed: { ...mapGetters({ cartData:"addShopList", totalNum : "totalNum", totalPrice:"totalPrice" }) }, methods: { ...mapActions({ clearCart:"clearToCart", deleteShop:"deletToShop" }) } } </script>
vuex 創(chuàng)建
npm install vuex --save,創(chuàng)建vuex文件夾,在文件夾中創(chuàng)建store.js,引入vuex;
store.js
import Vue from "vue" import Vuex from "vuex" import cart from "./modules/cart" Vue.use(Vuex) export default new Vuex.Store({ modules: { cart } })
建立一個模塊文件夾modules,里面創(chuàng)建創(chuàng)建當(dāng)個store模塊,然后默認(rèn)輸出,在store.js中引入;
cart.js
const state = { 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: "螞蟻上數(shù)", price : 13 }, { id: 50, name: "臘肉炒蒜薹", price : 15 }], add : [] } const getters = { // 獲取商品列表 getShopList: state => state.shop_list, // 獲取購物車列表 addShopList: state => { // map()方法返回一個新數(shù)組,數(shù)組中的元素為原始數(shù)組元素調(diào)用函數(shù)處理后的值 return state.add.map(({ id, num }) => { let product = state.shop_list.find(n => n.id == id)// find()方法返回通過測試(函數(shù)內(nèi)判斷)的數(shù)組的第一個元素的值,如果沒有符合條件的元素返回undefined if (product) {// 如果存在該商品 return {// 返回對象 ...product, num } } }) }, // 獲取總數(shù)量 totalNum: (state, getters) => { let total = 0 getters.addShopList.map(n => { total += n.num }) return total }, // 計算總價格 totalPrice: (state, getters) => { let total = 0 getters.addShopList.map(n => { total += n.num * n.price }) return total } }, const actions = { // 加入購物車 addToCart({ commit},product) { commit("addCart", { id : product.id }) }, // 清空購物車 clearToCart({ commit}) { commit("clearCart") }, // 刪除單個物品 deletToShop({ commit},product) { commit("deletShop",product) } } const mutations = { // 加入購物車 addCart(state, { id}){ let record = state.add.find(n => n.id == id) if (!record) {// 如果購物車中不存在該商品 state.add.push({// 追加商品 id, num : 1 }) } else { // 如果商品已經(jīng)加入購物車,則改變數(shù)量 record.num++ } }, // 刪除單個物品 deletShop(state, product) { state.add.forEach((item,i) => { if (item.id == product.id) {// 如果找到該商品 state.add.splice(i,1) } }) }, // 清空購物車 clearCart(state) { state.add = [] } } export default { state, getters, actions, mutations }
以上就是關(guān)于“如何用vuex代碼實現(xiàn)簡單的購物車功能”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
當(dāng)前題目:如何用vuex代碼實現(xiàn)簡單的購物車功能
路徑分享:http://jinyejixie.com/article0/gpesoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、做網(wǎng)站、網(wǎng)頁設(shè)計公司、外貿(mào)網(wǎng)站建設(shè)、品牌網(wǎng)站制作、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)