【小程序商城实战-Taro3开发-课程5】自定义组件:商品列表

一、组件规范

1、自定义组件放到src/componets目录下。不同模块的组件再各自建立子目录

2、vue组件文件名称的命名规范:kebab-case 短横线分隔命名

3、其他风格规范参考Vue风格指南

二、商品Vue组件 src\components\goods\goods.vue

<template>
  <view @tap="handleNavigate" class='goods-wrapper' >
    <view class='goods-item'>
      <view>
        <image :src="goods.imageUrl" class='goods-item-image' />
      </view>

      <view class='goods-item-info'>
        <view class="goods-item-info-title"> {{goods.title}}</view>
        <view class="goods-item-info-price">
          <view class="goods-item-info-price-wraper">
            <text class="sale-price">¥{{goods.price}}</text>
          </view>
          <view class="goods-item-info-price-wraper" v-if="goods.origin">
            <text class="origin-price">¥{{goods.origin}}</text>
          </view>
        </view>
      </view>
    </view>
  </view>
</template>

<script>
import Vue from 'vue'
import { eventCenter } from '@tarojs/taro'
import Taro from '@tarojs/taro'
import './goods.scss'
export default {
  props: ['goods'],
  methods: {
    handleNavigate () {
    }
  }
}
</script>

三、商品列表Vue组件src\components\goods\goods_list.vue

<template>
  <view className='goods-list'>
    <loading v-if="loading" />
    <goods
      v-else
      v-for="g in goodsList"
      :key="g.id"
      :goods="g"
    />
  </view>
</template>

<script >
import Vue from 'vue'
import Loading from '../loading.vue'
import Goods from './goods.vue'
export default {
  components: {
    'loading': Loading,
    'goods': Goods
  },
  props: {
    goodsList: {
      type: Array,
      default: []
    },
    loading: {
      type: Boolean,
      default: true
    }
  }
}
</script>   

四、页面组件src\pages\index\index.vue

<template>
  <view class='goods-container'>
    <goods-list-component
      :goodsList="goodsList"
      :loading="loading"
    />
  </view>
</template>

<script>
import Taro from '@tarojs/taro'
import Vue from 'vue'
import GoodsList from '../../components/goods/goods_list.vue'
import './index.scss'
import res from '../../data/goodsList.json'

export default {
  components: {
    'goods-list-component': GoodsList
  },
  data () {
    return {
      loading: true,
      goodsList: []
    }
  },
   async created() {
    try {
      console.log('created')
      console.log(res)
      // const res = await Taro.request({
      //   url: api.getLatestTopic()
      // })
      this.loading = false
      this.goodsList = res.data.list
    } catch (error) {
      Taro.showToast({
        title: '载入远程数据错误'
      })
    }
  },
  onLoad () {
    console.log('onLoad')
  },
  onShow () {
    console.log('onShow')
  },
  onReady () {
    console.log('onReady')
  },
  onHide () {
    console.log('onHide')
  },
}
</script>

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值