在现代Web开发中,Vue.js作为一个渐进式JavaScript框架,凭借其灵活性和易用性,被广泛应用于构建用户界面和单页应用。最近,Vue 3.0版本的发布,更是引入了一系列新特性和优化,使开发变得更加简便和强大。今天,我们将通过一个简单的购物车功能来展示如何在Vue 3中实现添加和移除商品的功能。 ``` src │ ├── components │ ├── ProductList.vue │ ├── ShoppingCart.vue │ ├── App.vue ├── main.js ```
## 代码实现
接着,创建一个新的Vue 3项目: ```bash vue create vue-shopping-cart cd vue-shopping-cart ``` ### 安装必要的依赖
### 设置 Vuex Store ```javascript // store.js import { createStore } from 'vuex';
const store = createStore({ state: { products: [ { id: 1, name: 'Product A', price: 100 }, { id: 2, name: 'Product B', price: 200 }, ], cart: [], }, mutations: { ADD_TO_CART(state, product) { const item = state.cart.find(i => i.id === product.id); if (item) { item.quantity++; } else { state.cart.push({ ...product, quantity: 1 }); } }, REMOVE_FROM_CART(state, product) { const itemIndex = state.cart.findIndex(i => i.id === product.id); if (itemIndex > -1) { state.cart.splice(itemIndex, 1); } }, }, getters: { cartTotal(state) { return state.cart.reduce((total, item) => total + item.price * item.quantity, 0); }, }, });
export default store; ``` ### 配置入口文件
### 创建ProductList组件 ```vue <template> <div class='product-list'> <h2>Product List</h2> <ul> <li v-for='product in products' :key='product.id'> {{ product.name }} - ${{ product.price }} <button @click='addToCart(product)'>Add to Cart</button> </li> </ul> </div> </template>
<script> import { mapState, mapMutations } from 'vuex';
export default { computed: { ...mapState(['products']), }, methods: { ...mapMutations(['ADD_TO_CART']), addToCart(product) { this.ADD_TO_CART(product); }, }, }; </script>
<style scoped> .product-list { margin-bottom: 20px; }
button { margin-left: 10px; } </style> ``` ### 创建ShoppingCart组件
### 配置主组件 ```vue <template> <div id='app'> <ProductList /> <ShoppingCart /> </div> </template>
<script> import ProductList from './components/ProductList.vue'; import ShoppingCart from './components/ShoppingCart.vue';
export default { components: { ProductList, ShoppingCart, }, }; </script>
<style> #app { font-family: Avenir, Helvetica, Arial, sans-serif; text-align: center; color: #2c3e50; } </style> ``` ## 运行项目
访问 [http://localhost:8080](http://localhost:8080),你应该可以看到一个简单的产品列表和购物车。当你点击“Add to Cart”按钮时,商品将会被添加到购物车;同时,你可以通过点击“Remove”按钮将商品从购物车中移除。 |
|