vue+vant实现商品列表批量倒计时功能

下面是详细的讲解。

环境搭建

首先,我们需要安装 Node.js 环境和 Vue CLI 脚手架。其中 Vue CLI 脚手架可以通过 npm 安装,具体的安装命令如下:

npm install -g @vue/cli

创建项目

安装完 Vue CLI 后,我们就可以使用它来创建一个 Vue 项目了。在命令行输入下面的命令来创建一个基本的 Vue 项目:

vue create demo

其中,demo 是你创建的项目名称,可以根据自己的需要来自定义。

引入 VantUI

接着,我们需要在项目中引入 VantUI,VantUI 是一款基于 Vue.js 的移动端 UI 组件库,提供了丰富的组件和工具。使用 VantUI 可以快速构建一个好看、易用的移动端应用。可以通过 npm 安装,具体的命令如下:

npm i vant -S

实现商品列表批量倒计时功能

有了基本的开发环境和 VantUI 的支持,我们就可以开始实现商品列表批量倒计时功能了。

首先,我们需要在页面中引入我们需要使用的组件和样式,如下所示:

<template>
  <div class="product-list">
    <van-row class="product-item" v-for="(item, index) in productList" :key="index">
      <van-col span="12" class="product-image">
        <img :src="item.image" alt="">
      </van-col>
      <van-col span="12" class="product-info">
        <div class="product-name">{{ item.name }}</div>
        <div class="product-price">{{ item.price }}</div>
        <van-count-down class="product-countdown" :time="item.countdown" :format="countdownFormat"></van-count-down>
      </van-col>
    </van-row>
  </div>
</template>

<script>
import { Row, Col, CountDown } from 'vant';

export default {
  name: 'ProductList',
  components: { Row, Col, CountDown },
  data() {
    return {
      productList: [
        { name: '商品1', image: 'https://picsum.photos/200/200?random=1', price: '¥ 10.00', countdown: 3600 },
        { name: '商品2', image: 'https://picsum.photos/200/200?random=2', price: '¥ 20.00', countdown: 1800 },
        { name: '商品3', image: 'https://picsum.photos/200/200?random=3', price: '¥ 30.00', countdown: 7200 },
      ],
      countdownFormat: '{h}:{m}:{s}',
    };
  },
};
</script>

接下来,我们需要在 data 中定义商品列表数据 productList,其中每个商品都包括商品名称、商品图片、商品价格和倒计时时间。

在页面中,我们使用了 VantUI 的 van-rowvan-col 组件来实现商品列表的排版。对于倒计时组件的使用,我们使用了 VantUI 的 van-count-down 组件,该组件支持自定义时间格式和倒计时结束的回调事件。当倒计时结束后,我们可以触发该商品的删除事件,将该商品从商品列表中移除。

示例说明

示例一

我们可以先在 created 钩子中监听倒计时结束的事件,如下所示:

<script>
export default {
  name: 'ProductList',
  // ...
  created() {
    // 监听倒计时结束的事件
    this.$on('van-count-down:finish', this.handleCountdownFinish);
  },
  methods: {
    handleCountdownFinish(index) {
      // 删除该商品
      this.productList.splice(index, 1);
    },
  },
};
</script>

当倒计时结束后,VantUI 的 van-count-down 组件会自动触发 van-count-down:finish 事件并将该商品的索引 index 作为参数传递,我们可以在事件回调函数 handleCountdownFinish 中删除该商品。

示例二

我们还可以自定义倒计时时间格式,例如:{hh}:{mm}:{ss},如下所示:

<van-count-down class="product-countdown" :time="item.countdown" :format="{ hh }:{ mm }:{ ss }"></van-count-down>

在自定义时间格式时,需要注意 {} 中间的内容必须是小写的,否则会导致格式化失败。另外,在格式中可以使用以下占位符:

  • {d}:天数
  • {h}:小时数
  • {m}:分钟数
  • {s}:秒数
  • {dd}:天数,不足两位自动补零
  • {hh}:小时数,不足两位自动补零
  • {mm}:分钟数,不足两位自动补零
  • {ss}:秒数,不足两位自动补零

以上就是 Vue 和 VantUI 实现商品列表批量倒计时功能的完整攻略,希望可以对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue+vant实现商品列表批量倒计时功能 - Python技术站

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

相关文章

  • 详解Vue 的异常处理机制

    详解Vue 的异常处理机制 在Vue中,异常处理是非常重要的一项功能。当Vue应用程序遇到错误时,异常处理机制能够以可控的方式展示错误信息,帮助开发过程中更加高效、准确的定位和解决问题。本文将详解Vue的异常处理机制,以及如何在Vue应用程序中实现异常处理。 Vue 的异常处理机制 Vue中的异常处理机制主要由以下两部分组成: 1.全局错误处理器(Globa…

    Vue 2023年5月27日
    00
  • mpvue构建小程序的方法(步骤+地址)

    mpvue是一款基于Vue.js框架的小程序前端开发框架,它可以实现在小程序中使用Vue.js的语法和开发方式,极大地提高了小程序的开发效率和代码质量。下面我将详细讲解如何使用mpvue构建小程序。 步骤 安装mpvue脚手架工具 npm install -g vue-cli vue init mpvue/mpvue-quickstart my-projec…

    Vue 2023年5月27日
    00
  • springboot vue完成编辑页面发送接口请求功能

    准备工作首先,需要准备好以下环境和工具: JDK 1.8及以上版本 Maven Node.js Vue CLI:可以通过npm安装:npm install -g vue-cli 创建项目使用Vue CLI来创建一个基础的Vue.js项目: vue init webpack vue-project 执行上述命令会创建一个名为“vue-project”的Vue.…

    Vue 2023年5月28日
    00
  • 一个Vue页面的内存泄露分析详解

    一、什么是内存泄露? 首先,了解什么是内存泄露。内存泄露是指程序在申请动态内存后,无法释放已经申请的内存空间的情况。如果出现内存泄露,应用程序占用的内存会越来越多,进而引发系统的崩溃。 二、Vue页面中常见的内存泄露 Vue开发中常见的内存泄露问题通常有: 1.事件绑定不当:在Vue中,dom事件绑定需要在组件的生命周期hook函数中进行绑定,而不是在cre…

    Vue 2023年5月28日
    00
  • Vue reactive函数实现流程详解

    Vue Reactive函数实现流程详解 Vue.js 框架的核心就是数据驱动,同时也是以数据为中心来响应视图变化。然而,Vue.js 还支持响应式,因此当数据发生变化时,Vue.js 自动更新视图。 在 Vue.js 中,通过 getter 和 setter 函数来实现数据的响应式。 实现流程 Vue.js 的实现响应式的方式,是通过劫持数据对象的属性来达…

    Vue 2023年5月28日
    00
  • vue跳转同一个组件,参数不同,页面接收值只接收一次的解决方法

    针对“vue跳转同一个组件,参数不同,页面接收值只接收一次”的问题,我们可以采用以下两种解决方案: 方案一:使用watch监听$route变化 这种方式需要在组件的created或mounted生命周期中,监听vue-router的$route对象。如下所示: <template> <div> <p>{{ message …

    Vue 2023年5月27日
    00
  • Vue中CSS scoped的原理详细讲解

    Vue中的CSS scoped可以实现局部作用域,从而避免全局CSS样式造成的样式冲突。在Vue组件中使用scoped属性,可以使得CSS只作用于当前组件,而不会影响到其他组件或全局CSS的样式。 下面是实现scoped的原理: Vue编译器会将组件的模板和样式分别处理,然后生成纯JS代码 在处理样式时,编译器会将scoped属性添加到组件的根元素上 在生成…

    Vue 2023年5月28日
    00
  • Vue动态组件与内置组件浅析讲解

    Vue动态组件与内置组件浅析讲解 什么是Vue动态组件 Vue动态组件是一种结合动态组件和组件的功能,允许我们在运行时通过提供一个名称来动态切换组件。 我们可以使用Vue的内置动态组件标签\<component>,该标签可以通过一个特殊的is属性动态绑定组件。 例如: <component :is="currentComponen…

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