新鮮好物實現

1.準備模板
<script setup>import HomePanel from './HomePanel.vue'</script><template><homePanel></HomePanel><!-- 下面是插槽主體內容模版<ul class="goods-list"><li v-for="item in newList" :key="item.id"><RouterLink to="/"><img :src="item.picture" alt="" /><p class="name">{{ item.name }}</p><p class="price">¥{{ item.price }}</p></RouterLink></li></ul>-->
</template><style scoped lang='scss'>
.goods-list {display: flex;justify-content: space-between;height: 406px;li {width: 306px;height: 406px;background: #f0f9f4;transition: all .5s;&:hover {transform: translate3d(0, -3px, 0);box-shadow: 0 3px 8px rgb(0 0 0 / 20%);}img {width: 306px;height: 306px;}p {font-size: 22px;padding-top: 12px;text-align: center;text-overflow: ellipsis;overflow: hidden;white-space: nowrap;}.price {color: $priceColor;}}
}
</style>
2.定制props
<script setup>import HomePanel from './HomePanel.vue'</script><template><homePanel title="新鮮好物" sub-title="新鮮出爐 品質靠譜"></HomePanel><!-- 下面是插槽主體內容模版<ul class="goods-list"><li v-for="item in newList" :key="item.id"><RouterLink to="/"><img :src="item.picture" alt="" /><p class="name">{{ item.name }}</p><p class="price">¥{{ item.price }}</p></RouterLink></li></ul>-->
</template><style scoped lang='scss'>
.goods-list {display: flex;justify-content: space-between;height: 406px;li {width: 306px;height: 406px;background: #f0f9f4;transition: all .5s;&:hover {transform: translate3d(0, -3px, 0);box-shadow: 0 3px 8px rgb(0 0 0 / 20%);}img {width: 306px;height: 306px;}p {font-size: 22px;padding-top: 12px;text-align: center;text-overflow: ellipsis;overflow: hidden;white-space: nowrap;}.price {color: $priceColor;}}
}
</style>
3.定制接口

/*** @description: 獲取新鮮好物* @param {*}* @return {*}*/
export const findNewAPI = () => {return httpInstance({url:'/home/new'})
}
<script setup>import HomePanel from './HomePanel.vue'import {findNewAPI} from '@/apis/home'//獲取數據
const newlist = ref([])const getNewList = async() => {const res = await findNewAPI()newList.value = res.result
}onMounted(() => getNewList())
</script><template><homePanel title="新鮮好物" sub-title="新鮮出爐 品質靠譜"></HomePanel><!-- 下面是插槽主體內容模版<ul class="goods-list"><li v-for="item in newList" :key="item.id"><RouterLink to="/"><img :src="item.picture" alt="" /><p class="name">{{ item.name }}</p><p class="price">¥{{ item.price }}</p></RouterLink></li></ul>-->
</template><style scoped lang='scss'>
.goods-list {display: flex;justify-content: space-between;height: 406px;li {width: 306px;height: 406px;background: #f0f9f4;transition: all .5s;&:hover {transform: translate3d(0, -3px, 0);box-shadow: 0 3px 8px rgb(0 0 0 / 20%);}img {width: 306px;height: 306px;}p {font-size: 22px;padding-top: 12px;text-align: center;text-overflow: ellipsis;overflow: hidden;white-space: nowrap;}.price {color: $priceColor;}}
}
</style>

4.插槽
<script setup>import HomePanel from './HomePanel.vue'import {findNewAPI} from '@/apis/home'//獲取數據
const newlist = ref([])const getNewList = async() => {const res = await findNewAPI()newList.value = res.result
}onMounted(() => getNewList())
</script><template><homePanel title="新鮮好物" sub-title="新鮮出爐 品質靠譜"><ul class="goods-list"><li v-for="item in newList" :key="item.id"><RouterLink to="/"><img v-img-lazy="item.picture" alt="" /><p class="name">{{ item.name }}</p><p class="price">¥{{ item.price }}</p></RouterLink></li></ul></HomePanel>// <!-- 下面是插槽主體內容模版// <ul class="goods-list">// <li v-for="item in newList" :key="item.id">// <RouterLink to="/">// <img :src="item.picture" alt="" />// <p class="name">{{ item.name }}</p>// <p class="price">¥{{ item.price }}</p>// </RouterLink>// </li>// </ul>// -->
</template><style scoped lang='scss'>
.goods-list {display: flex;justify-content: space-between;height: 406px;li {width: 306px;height: 406px;background: #f0f9f4;transition: all .5s;&:hover {transform: translate3d(0, -3px, 0);box-shadow: 0 3px 8px rgb(0 0 0 / 20%);}img {width: 306px;height: 306px;}p {font-size: 22px;padding-top: 12px;text-align: center;text-overflow: ellipsis;overflow: hidden;white-space: nowrap;}.price {color: $priceColor;}}
}
</style>
