成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

如何用vuex代碼實現(xiàn)簡單的購物車功能

這篇“如何用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è)費用合理。

文件目錄如下:

如何用vuex代碼實現(xiàn)簡單的購物車功能

購物車組件

<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)

網(wǎng)站優(yōu)化排名
温泉县| 太康县| 嘉禾县| 水富县| 山丹县| 牙克石市| 军事| 平南县| 兴山县| 浮梁县| 遵化市| 建始县| 皮山县| 宕昌县| 正定县| 久治县| 尼木县| 土默特左旗| 东辽县| 汤原县| 宕昌县| 东港市| 四川省| 中超| 上杭县| 彩票| 全椒县| 宁远县| 宣恩县| 邛崃市| 云浮市| 旬邑县| 大足县| 黑水县| 忻城县| 香格里拉县| 阿荣旗| 布尔津县| 厦门市| 博白县| 崇义县|