当前位置: 首页 > news >正文

vue3前端开发-小兔鲜项目-产品详情基础数据渲染

vue3前端开发-小兔鲜项目-产品详情基础数据渲染!这一次内容比较多,我们分开写。第一步先完成详情页面的基础数据的渲染。然后再去做一下右侧的热门产品的列表内容。


第一步,还是老规矩,先准备好接口函数。方便我们的页面组件拿到对应的产品信息数据。

import request from '@/utils/http'export const getDetail = (id) => {return request({url: '/goods',params: {id}})
}

这个位置还是在apis文件夹下面新建了一个detail.js


第二步,在组件内调用这个接口函数,自定义好对应的页面数据对象。开始绑定数据即可。

<script setup>
import {getDetail} from '@/apis/detail'
import {ref,onMounted} from 'vue'
import { useRoute } from 'vue-router';
const route = useRoute()
const goods = ref({})
const getGoods = async ()=>{const res = await getDetail(route.params.id)goods.value =res.result
}
onMounted(()=>getGoods())
</script>

代码比较简单,我们不再一一介绍了。大家都能看得懂。


第三步就是把这个数据对象渲染到页面组件内。

<template><div class="xtx-goods-page"><div class="container" v-if="goods.details"><div class="bread-container"><el-breadcrumb separator=">"><el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item><el-breadcrumb-item :to="{ path: `/category/${goods.categories[1].id}` }">{{goods.categories[1].name}}</el-breadcrumb-item><el-breadcrumb-item :to="{ path: `/category/sub/${goods.categories[0].id}` }">{{goods.categories[0].name}}</el-breadcrumb-item><el-breadcrumb-item>{{goods.name}}</el-breadcrumb-item></el-breadcrumb></div><!-- 商品信息 --><div class="info-container"><div><div class="goods-info"><div class="media"><!-- 图片预览区 --><!-- 统计数量 --><ul class="goods-sales"><li><p>销量人气</p><p> {{goods.salesCount}}+ </p><p><i class="iconfont icon-task-filling"></i>销量人气</p></li><li><p>商品评价</p><p>{{goods.commentCount}}+</p><p><i class="iconfont icon-comment-filling"></i>查看评价</p></li><li><p>收藏人气</p><p>{{goods.collectCount}}+</p><p><i class="iconfont icon-favorite-filling"></i>收藏商品</p></li><li><p>品牌信息</p><p>{{goods.brand.name}}+</p><p><i class="iconfont icon-dynamic-filling"></i>品牌主页</p></li></ul></div><div class="spec"><!-- 商品信息区 --><p class="g-name"> {{goods.name}} </p><p class="g-desc">{{ goods.desc }} </p><p class="g-price"><span>{{ goods.price }}</span><span> {{ goods.oldPrice }}</span></p><div class="g-service"><dl><dt>促销</dt><dd>12月好物放送,App领券购买直降120元</dd></dl><dl><dt>服务</dt><dd><span>无忧退货</span><span>快速退款</span><span>免费包邮</span><a href="javascript:;">了解详情</a></dd></dl></div><!-- sku组件 --><!-- 数据组件 --><!-- 按钮组件 --><div><el-button size="large" class="btn">加入购物车</el-button></div></div></div><div class="goods-footer"><div class="goods-article"><!-- 商品详情 --><div class="goods-tabs"><nav><a>商品详情</a></nav><div class="goods-detail"><!-- 属性 --><ul class="attrs"><li v-for="item in goods.details.properties" :key="item.value"><span class="dt">{{ item.name }}</span><span class="dd">{{item.value}}</span></li></ul><!-- 图片 --><img v-for="img in goods.details.pictures" v-img-lazy="img" :key="img"/></div></div></div><!-- 24热榜+专题推荐 --><div class="goods-aside"></div></div></div></div></div></div>
</template>

声明,这里,为了避免出现生命周期函数引起的故障,我们做了一个v-if的条件判定。当拿到了数据后,我们再让框架去渲染。否则是报错的,提示undefined.


一切正常。

http://www.lryc.cn/news/407826.html

相关文章:

  • Docker入门指南:Linux系统下的完整安装步骤与常见问题解答
  • Netty实现数据上下行
  • 【React】事件绑定:深入解析高效处理用户交互的最佳实践
  • SpringCloud:使用OpenFeign优化前面的Nacos实现高效购物车商品信息处理
  • 计算机三级嵌入式笔记(二)——嵌入式处理器
  • 【GoLang】Golang 快速入门(第一篇)
  • Linux中的三类读写函数
  • MATLAB基础应用精讲-【数模应用】二元Probit回归分析
  • 找工作准备刷题Day10 回溯算法 (卡尔41期训练营 7.24)
  • 如何有效的进行小程序的优化
  • FPGA-ROM IP核的使用(2)
  • Manticore Search(es轻量级替代)
  • 测试开发面试题---计算机网络
  • Wonder3D 论文学习
  • 【MySQL进阶之路 | 高级篇】显式事务和隐式事务
  • Ruby、Python、Java 开发者必备:Codigger之软件项目体检
  • day05 Router、vuex、axios
  • yolov5-7在opencv里跑自己的onnx模型
  • JVM 11 的优化指南:如何进行JVM调优,JVM调优参数有哪些
  • nginx的配置和使用
  • mysql面试(六)
  • 6.乳腺癌良性恶性预测(二分类、逻辑回归、PCA降维、SVD奇异值分解)
  • Vue3响应式高阶用法之markRaw()
  • 免费SSL证书的安全性与获取指南
  • 【CN】Argo 持续集成和交付(一)
  • Unity3D 自定义Debug双击溯源问题详解
  • 环境搭建-Docker搭建ClickHouse
  • 深入理解CSS中的变量(概念篇)
  • Prometheus 监控Tomcat等java应用的状态
  • c++中的斐波那契数列(Fibonacci Sequence)和背包问题(Knapsack Problem)