1.products.js中的内容:
import axios from "axios"
export default {
namespaced:true,
state:{
products:[]
},
mutations:{
getAllProducts(state,products){
state.products = products
},
decrementNum(state,{id}){
const product = state.products.find(item => item.id == id);
if(product.inventory >0){
product.inventory--
}
}
},
actions:{
async getAllProducts({commit}){
try {
const res =await axios.get("/api/products");
console.log(res);
const results = res.data.results;
commit("getAllProducts",results);
} catch (error) {
console.log("我报错了",error);
}
}
}
}
2.shoppCart组件的内容
- 就是通过
mapState和mapGetters完成映射
<template>
<div>
我是购物车组件
<ul>
<li v-for="(item) in getCartList" :key="item.id">{{item.title}}--{{item.price}} X {{item.quantity}}</li>
</ul>
<div>总价格:{{cartTotalPrice | currency}}</div>
</div>
</template>
<script>
import {
mapGetters,
mapState
} from 'vuex';
export default {
name: 'ShoppCart',
computed: {
...mapState('products', ['products']),
...mapGetters('cart', ['getCartList', 'cartTotalPrice']),
},
};
</script>
<style lang="scss" scoped>
</style>
3.补充下store中的index.js的内容:
import Vue from 'vue'
import Vuex from 'vuex'
import createLogger from 'vuex/dist/logger'
Vue.use(Vuex)
import test from"./modules/test";
import products from "./modules/products";
import cart from "./modules/cart";
export default new Vuex.Store({
plugins: [createLogger()],
state: {
count:5201314,
name:"linlin"
},
mutations: {
add(state,data){
state.count = state.count + data;
},
decrease(state,{dmount}){
state.count = state.count - dmount ;
}
},
actions: {
goAdd({commit},{amount}){
commit("add",amount)
}
},
modules: {
test,
products,
cart
}
})