请求数据获取成功但是商品页面无法显示

请求数据获取成功但是商品页面无法显示

https://img1.sycdn.imooc.com//climg/6326bb0709065e6b13640757.jpg

https://img1.sycdn.imooc.com//climg/6326bb070926df5113660731.jpg

相关代码:

<template>
  <div class="content">
    <div class="category">
      <div
       :class="{'category__item': true, 'category__item--active': currentTab === item.tab}"
       v-for="item in categories"
       :key="item.name"
       @click="() => handleTabClick(item.tab)"
       >
       {{item.name}}
      </div>
    </div>
    <div class="product">
      <div
       class="product__item"
       v-for="item in List"
       :key="item._id"
       >
        <img class="product__item__img" src="http://www.dell-lee.com/imgs/vue3/near.png" alt="">
        <div class="product__item__detail">
          <h4 class="product__item__title">{{item.name}}</h4>
          <p class="product__item__sales">月售{{item.sales}}件</p>
          <p class="product__item__price">
            <span class="product__item__yen">&yen;</span>{{item.price}}
            <span class="product__item__origin">&yen;{{item.oldPrice}}</span>
          </p>
        </div>
        <div class="product__number">
          <span class="product__number__minus">-</span>
          0
          <span class="product__number__plus">+</span>
        </div>
      </div>
    </div>
  </div>
</template>

<script>
import { reactive, ref, toRefs, watchEffect } from 'vue'
import { useRoute } from 'vue-router'
import { get } from '../../utils/request'

const categories = [
  { name: '全部商品', tab: 'all' },
  { name: '秒杀', tab: 'seckill' },
  { name: '新鲜水果', tab: 'fruit' }
]

// 和Tab切换相关的逻辑
const useTabEffect = () => {
  const currentTab = ref(categories[0].tab)
  const handleTabClick = (tab) => {
    currentTab.value = tab
  }
  return { currentTab, handleTabClick }
}

const useCurrentListEffect = (currentTab) => {
  const route = useRoute()
  const shopId = route.params.id
  const content = reactive({ list: [] })

  const getContentData = async () => {
    const result = await get(`/api/shop/${shopId}/products`, {
      tab: currentTab.value
    })
    if (result?.errno === 0 && result?.data?.length) {
      content.list = result.data
    }
  }

  watchEffect(() => { getContentData() })
  const { list } = toRefs(content)
  return { list }
}
export default {
  name: 'jdConent',
  setup () {
    const { currentTab, handleTabClick } = useTabEffect()
    const { list } = useCurrentListEffect(currentTab)
    console.log(list)
    return { categories, currentTab, handleTabClick, list }
  }
}
</script>


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,老师使用源码测试你的代码,报错提示为[Vue warn]: Property "List" was accessed during render but is not defined on instance。根据提示是List书写问题,将List修改为小写的list,则可以正常渲染。如下图:

https://img1.sycdn.imooc.com//climg/6326c82d09fca62f19201040.jpg

https://img1.sycdn.imooc.com//climg/6326c8900976f25d19201035.jpg

祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师