vue 实现列表跳转至详情且能添加至购物车功能

下面是“vue 实现列表跳转至详情且能添加至购物车功能”的攻略。该攻略的主要步骤如下:

  1. 构建商品列表页
  2. 构建商品详情页
  3. 实现跳转及传参功能
  4. 实现购物车功能

下面将详细介绍这些步骤。

构建商品列表页

首先需要构建一个商品列表页面,用于展示商品列表及其相关信息。可以使用v-for指令循环遍历商品数组,并通过router-link标签实现跳转到商品详情页。示例代码如下:

<template>
  <div>
    <h2>商品列表</h2>
    <ul>
      <li v-for="product in products" :key="product.id">
        <router-link :to="'/products/' + product.id">{{product.name}}</router-link>
        <p>{{product.price}}</p>
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      products: [
        { id: 1, name: '商品1', price: 100 },
        { id: 2, name: '商品2', price: 200 },
        { id: 3, name: '商品3', price: 300 },
        { id: 4, name: '商品4', price: 400 },
        { id: 5, name: '商品5', price: 500 }
      ]
    }
  }
}
</script>

构建商品详情页

接下来需要构建一个商品详情页面,用于展示单个商品的详细信息。可以通过$route.params获取路由中的参数,并通过computed属性筛选与参数相对应的商品。示例代码如下:

<template>
  <div>
    <h2>{{product.name}}</h2>
    <p>{{product.desc}}</p>
    <p>{{product.price}}</p>
    <button @click="addToCart(product)">加入购物车</button>
  </div>
</template>

<script>
export default {
  computed: {
    product() {
      return this.products.find(product => product.id === parseInt(this.$route.params.id))
    }
  },
  data() {
    return {
      products: [
        { id: 1, name: '商品1', price: 100, desc: '这是商品1的描述' },
        { id: 2, name: '商品2', price: 200, desc: '这是商品2的描述' },
        { id: 3, name: '商品3', price: 300, desc: '这是商品3的描述' },
        { id: 4, name: '商品4', price: 400, desc: '这是商品4的描述' },
        { id: 5, name: '商品5', price: 500, desc: '这是商品5的描述' }
      ]
    }
  },
  methods: {
    addToCart(product) {
      this.$store.dispatch('addProductToCart', product)
    }
  }
}
</script>

实现跳转及传参功能

现在需要将商品列表页和商品详情页链接起来,并且传递商品的id参数。可以使用<router-link>实现跳转,并在to属性中指定路由路径和需要传递的参数。示例代码如下:

<router-link :to="{ name: 'ProductDetails', params: { id: product.id }}">查看详情</router-link>

同时还需要在路由定义中指定参数,示例代码如下:

{
  path: '/products/:id',
  name: 'ProductDetails',
  component: ProductDetails
}

实现购物车功能

最后需要实现购物车功能,可以使用Vuex来实现。首先需要创建一个store对象,并且定义一个状态cartProducts,用于存储购物车中的商品。示例代码如下:

const store = new Vuex.Store({
  state: {
    cartProducts: []
  },
  mutations: {
    addProductToCart(state, product) {
      const record = state.cartProducts.find(p => p.id === product.id)
      if (!record) {
        state.cartProducts.push({
          id: product.id,
          quantity: 1
        })
      } else {
        record.quantity++
      }
    }
  },
  actions: {
    addProductToCart({ commit }, product) {
      commit('addProductToCart', product)
    }
  },
  getters: {
    cartProducts: state => {
      return state.cartProducts.map(item => {
        const product = state.products.find(p => p.id === item.id)
        return {
          id: product.id,
          name: product.name,
          price: product.price,
          quantity: item.quantity
        }
      })
    }
  }
})

在商品详情页面中,可以在单击“加入购物车”按钮时调用addToCart方法,并将商品对象作为参数传递给addProductToCart操作。该操作将在store的cartProducts数组中添加或更新商品对象。还可以在getter中获取cartProductsproducts数组,并创建一个新数组,用于存储购物车中商品的详细信息。

至此,我们已经完成了“vue 实现列表跳转至详情且能添加至购物车功能”的完整攻略。通过上述步骤,我们可以构建出一个完整的电商网站,并实现商品的查看、详情查看和添加购物车等功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue 实现列表跳转至详情且能添加至购物车功能 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • Vue组件之非单文件组件的使用详解

    下面我将为您详细讲解“Vue组件之非单文件组件的使用详解”的完整攻略。 什么是非单文件组件? 非单文件组件是指将组件的HTML、JS、CSS等代码都写在同一个文件中,并使用Vue.extend()方法将其构造成组件的一种方式。这种方式比较旧,但在一些老的Vue项目中仍有应用。目前Vue的官方文档已经不推荐使用这种方式。 非单文件组件的优缺点 优点 代码简单。…

    Vue 2023年5月28日
    00
  • vue中集成省市区街四级地址组件的实现过程

    下面就为你详细讲解vue中集成省市区街四级地址组件的实现过程的完整攻略。 一、什么是省市区街四级地址组件 省市区街四级地址组件是一种常见的地址选择器,用户可以通过该组件非常方便的选择自己所在的省份、城市、区县和街道信息。 二、如何集成省市区街四级地址组件 1. 使用第三方库 可以直接使用第三方的地址组件库来快速实现,在vue中,常见的第三方库有vue-qui…

    Vue 2023年5月27日
    00
  • vant时间控件使用方法详解

    Vant 时间控件使用方法详解 概述 Vant 是一款基于 Vue.js 的移动端组件库,其中包括了时间选择器(Picker)和日期选择器(DatetimePicker)等常用的时间控件。本文将详细介绍如何安装和使用 Vant 时间控件。 安装 通过 npm 安装 Vant: npm install vant -S 在 main.js 中引入 Vant: i…

    Vue 2023年5月29日
    00
  • Vue filter格式化时间戳时间成标准日期格式的方法

    下面是 “Vue filter格式化时间戳时间成标准日期格式的方法”的完整攻略: 1. 什么是Vue filter? Vue.filter是Vue提供的用于全局过滤器的机制,它可以重用一些常见的文本转换用法(包括格式化时间戳),以确保我们的代码具有更高的可读性、可维护性和可重用性。 下面我们将讲解如何使用Vue filter来格式化时间戳成标准的日期时间格式…

    Vue 2023年5月28日
    00
  • vue使用websocket的方法实例分析

    Vue使用WebSocket的方法实例分析 WebSocket是一种在单个TCP连接上进行全双工通信的协议。Vue.js是一个流行的JavaScript框架,常用于前端开发。在Vue中使用WebSocket可以实现实时更新数据等功能。本文将详细讲解在Vue中使用WebSocket的方法实例分析。 前置要求 在使用WebSocket之前,需要确保以下内容: 安…

    Vue 2023年5月28日
    00
  • Vue实现模糊查询filter()实例详解

    Vue实现模糊查询filter()实例详解 1. 简介 在Vue中,我们可以通过实现filter()函数来实现文本框的模糊查询功能,用户可以输入关键字,然后Vue会根据关键字对数据源进行过滤,只展示符合要求的数据,这无疑会提高应用程序的用户体验,本文就是要介绍如何使用Vue实现模糊查询filter()函数的详细攻略。 2. 实现步骤 2.1 准备数据 首先,…

    Vue 2023年5月27日
    00
  • vue3.0如何在全局挂载对象和方法

    在Vue 3.0中,我们可以使用 createApp 函数来创建一个应用实例,在该实例中可以挂载对象和方法,使其在全局范围内可用。 全局挂载对象 在应用实例中调用 provide 方法,然后将需要全局挂载的对象作为参数传递进去,即可实现全局挂载该对象。 // main.js import { createApp } from ‘vue’ import App…

    Vue 2023年5月28日
    00
  • 解决vue项目F5刷新mounted里的函数不执行问题

    针对“解决Vue项目F5刷新mounted里的函数不执行问题”的问题,可以采用以下方法来解决。 问题描述 在Vue项目中,经常会遇到这样一种情景:在编写mounted生命周期函数时,将一些需要执行的函数放在这个钩子中,但当F5刷新页面后,这些函数并没有像预期那样被执行。那么,针对这种问题,我们该如何处理呢?下面,将提供具体的解决方案。 解决方案 方案一:使用…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部