uniapp:封装商品列表为组件并使用
封装商品列表为组件并使用
商品组件封装
<template>
<!-- 商品列表 -->
<view class="goods_list">
<view class="goods_item" v-for="item in goods" :key="item.id">
<image :src="item.img_url"></image>
<view class="price">
<text>¥{{item.sell_price}}</text>
<text>¥{{item.market_price}}</text>
</view>
<view class="name">
{{item.title}}
</view>
</view>
</view>
</template>
<script>
export default {
props: ['goods'], // 接收父组件传值
name: "goods-list",
data() {
return {
};
}
}
</script>
<style lang="scss">
.goods_list {
padding: 0 15rpx;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.goods_item {
background: #fff;
width: 355rpx;
margin: 10rpx 0;
padding: 15rpx;
box-sizing: border-box;
image {
width: 80%;
height: 150px;
display: block;
margin: auto;
}
.price {
color: $shop-color;
font-size: 36rpx;
margin: 20rpx 0 5rpx 0;
text:nth-child(2) {
color: #ccc;
font-size: 28rpx;
margin-left: 17rpx;
text-decoration: line-through;
}
}
.name {
font-size: 28rpx;
line-height: 50rpx;
padding-bottom: 15rpx;
padding-top: 10rpx;
}
}
}
</style>
使用组件示例
<template>
<view>
<goods-list :goods="goods"></goods-list>
</view>
</template>
<script>
import goodsList from "../../components/goods-list/goods-list.vue"//1.导入
export default {
data() {
return {
goods: [],
pageIndex: 1
}
},
onLoad() {
this.getHotGoods();
},
methods: {
// 获取热门商品列表数据
async getHotGoods() {
const res = await this.$myRequest({
url: '/api/getgoods?pageindex=' + this.pageIndex
})
this.goods = res.data.message
}
},
components: {
"goods-list": goodsList //2.注册
}
}
</script>