关于Uniapp使用vant2购物sku组件的不兼容解决办法

开发中写到了购物车模块 子组件使用的是uniapp中的sku,每次子组件显示的时候就报错

一开始找了很多网友的其他写法也是一样得报错 

下图贴上子组件全部的代码 实在是没办法了 去看了下官方文档搜索报错发现vant2中的某些组件 如果在uniapp中使用的话不兼容,也就是一直报(Invalid handler for event "load": got undefined )~~~~~~~~~~~!!!

此时只想真实vant官方为什么官方文档不进行提示;

解决办法!!!

后来换了种写法 下面附上全部sku子组件代码(兼容uniapp 放心食用)

<template>
  <div class="info">
    <van-sku
      v-model="show"
      :sku="sku"
      :goods="goods"
      :goods-id="goodsId"
      buy-text="确定"
      add-cart-text="加入购物车"
      :show-add-cart-btn="false"
      :quota="quota"
      :quota-used="quotaUsed"
      :hide-stock="sku.hide_stock"
      @buy-clicked="onBuyClicked"
      @sku-close="onSkuClose"
    >
      <template #sku-header="props">
        <view class="van-sku-header van-hairline--bottom">
          <view class="van-image van-sku-header__img-wrap" @click="">
            <image :src="goods.picture" class="van-image__img" style="object-fit: cover"></image>
          </view>
          <view class="van-sku-header__goods-info">
            <view class="van-sku__goods-price">
              <text class="van-sku__price-symbol"> ¥ </text>
              <text class="van-sku__price-num">{{ sku.price }}</text>
            </view>
            <view class="van-sku-header-item">
              <text
                >剩余 <text>{{ sku.stock_num }}</text> 件</text
              >
            </view>
            <view class="van-sku-header-item"> 请选择 非必选属性 未加价的属性项 </view>
          </view>
        </view>
      </template>
    </van-sku>
    <van-overlay class="goods-van-overlay" :show="showPreview" @click="showPreview = false">
      <div class="wrapper">
        <image :src="goods.picture" style="width: 100%" mode="widthFix"></image>
      </div>
    </van-overlay>
  </div>
</template>

<script>
import { Toast } from 'vant';
import { mapState, mapMutations } from 'vuex';
export default {
  name: 'skuTel',
  computed: {
    ...mapState(['flag']),
  },
  methods: {
    onSkuClose() {
      this.$emit('skuClose', '关闭');
    },
    onBuyClicked(data) {
      // this.$toast('buy:' + JSON.stringify(data));
      this.$emit('gotoConfimPg', '确认订单');
    },
    // onAddCartClicked(data) {
    //   this.$toast('add cart:' + JSON.stringify(data));
    // },
    // onBuyClicked(sku) {
    //   Toast('点击购买');
    //   this.$emit('gotoConfimPg', '确认订单');
    // },
  },
  watch: {
    showaaa: {
      handler(n, o) {
        this.show = n;
      },
      deep: true,
      immediate: true,
    },
  },
  destroyed() {},
  props: {
    showaaa: false,
  },
  data() {
    return {
      show: false,
      goodsId: '2259',
      quota: 0,
      quotaUsed: 1,
      sku: {
        // 所有sku规格类目与其值的从属关系,比如商品有颜色和尺码两大类规格,颜色下面又有红色和蓝色两个规格值。
        // 可以理解为一个商品可以有多个规格类目,一个规格类目下可以有多个规格值。
        tree: [],
        list: [],
        // 所有 sku 的组合列表,比如红色、M 码为一个 sku 组合,红色、S 码为另一个组合
        price: '10.00', // 默认价格(单位元)
        stock_num: 227, // 商品总库存
        none_sku: false, // 是否无规格商品
        hide_stock: false, // 是否隐藏剩余库存
      },
      goods: {
        picture: '',
      },
      showPreview: false,
      previewImage: '',
      currentBuyType: '',
    };
  },
};
</script>

<style></style>

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值