van-sku 是 Vant 中用于商品规格选择的组件,它提供了一个弹窗界面,用户可以选择商品的不同规格。以下是一个简单的例子,演示如何在 Vue 项目中使用 Vant 的 van-sku 组件:
<template>
  <div>
    <!-- 使用 van-sku 组件 -->
    <van-sku
      v-model="showSku"
      :sku="skuData"
      :goods="goodsData"
      @buy="onBuy"
    />
  </div>
</template>

<script>
export default {
  data() {
    return {
      // 是否显示商品规格选择弹窗
      showSku: false,
      // 商品规格数据
      skuData: {
        tree: [
          {
            k: '颜色',
            v: [
              { id: '1', name: '红色' },
              { id: '2', name: '蓝色' },
            ],
          },
          {
            k: '尺码',
            v: [
              { id: 'a', name: 'S' },
              { id: 'b', name: 'M' },
              { id: 'c', name: 'L' },
            ],
          },
        ],
        list: [
          {
            id: 'sku_1',
            price: 100,
            stock: 10,
            s1: '1',
            s2: 'a',
          },
          {
            id: 'sku_2',
            price: 120,
            stock: 20,
            s1: '1',
            s2: 'b',
          },
          {
            id: 'sku_3',
            price: 150,
            stock: 15,
            s1: '2',
            s2: 'a',
          },
          // 其他商品规格数据...
        ],
      },
      // 商品信息数据
      goodsData: {
        title: '商品标题',
        picture: 'https://example.com/goods.jpg',
        price: '100',
        originPrice: '120',
      },
    };
  },
  methods: {
    // 立即购买的回调
    onBuy(skuData) {
      // 处理立即购买逻辑,skuData 包含用户选择的商品规格信息
      console.log('立即购买:', skuData);
    },
  },
};
</script>

在上述代码中:

  •  showSku 控制是否显示商品规格选择弹窗。

  •  skuData 包含了商品的规格信息,其中 tree 用于定义规格的种类和选项,list 用于定义不同规格对应的商品信息。

  •  goodsData 包含了商品的基本信息,如标题、图片、价格等。


通过这些属性,你可以根据实际需求配置 van-sku 组件的外观和行为。在 @buy 事件回调中,你可以处理用户点击立即购买按钮的逻辑,获取用户选择的商品规格信息。

确保在使用 van-sku 组件前,你的项目中已经正确引入了 Vant 组件库。如果你的项目中还没有引入 Vant,你需要先安装 Vant,并在需要使用的地方引入样式和组件。
npm install vant

然后在需要使用的地方引入:
import 'vant/lib/index.css';
import { Sku } from 'vant';

Vue.use(Sku);




转载请注明出处:http://www.zyzy.cn/article/detail/5710/Vant