前端debug轮播图报错TypeError: Cannot read properties of undefined (reading ‘topModule‘)

Posted karshey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端debug轮播图报错TypeError: Cannot read properties of undefined (reading ‘topModule‘)相关的知识,希望对你有一定的参考价值。

文章目录

bug

写轮播图的时候报错:

TypeError: Cannot read properties of undefined (reading ‘topModule’)

显示mainPart不存在,但是显示出了图片。

对应代码:
html

<detailSwipe :swipe-data="detailData.mainPart.topModule.housePicture.housePics"/>
<!-- 轮播图 -->
<template>
    <div class="swipe">
        <van-swipe class="my-swipe" :autoplay="3000" lazy-render>
            <van-swipe-item v-for="item in props.swipeData" :key="item">
                <img :src="item.albumUrl" />
            </van-swipe-item>
        </van-swipe>
    </div>
</template>

<script setup>
const props = defineProps(
    swipeData: 
        type: Array,
        default: () => []
    
)

</script>

js:

const detailStore = useDetailStore()

detailStore.fetchDetailData(houseId)
const  detailData  = storeToRefs(detailStore)

fetchDetailData

import  defineStore  from "pinia";
import  getDetailInfos  from '@/service/modules/detail'

const useDetailStore = defineStore('detail', 
    state: () => 
        return 
            detailData: ,

        
    ,
    actions: 
        async fetchDetailData(houseId) 
            const res = await getDetailInfos(houseId)
            // console.log(res)
            this.detailData=res.data
        
    
)

export default useDetailStore

debug

控制台报错显示mainPart不存在,但页面却显示出了mainPart存在。说明:一开始mainPart不存在,之后又存在了。

分析代码发现,detailData响应式的,而detailData 的数据是通过网络请求fetchDetailData得到,网络请求需要时间。

一开始页面渲染的时候还没有请求到数据,此时mainPart不存在,控制台会报错,网络请求到数据之后就存在了,页面显示出数据,但报错不会取消。

这个报错虽然不用管也不会影响页面的显示(?),但我们还是要解决它。

解决方法1:可选链运算符?.

<detailSwipe :swipe-data="detailData?.mainPart?.topModule?.housePicture?.housePics"/>

有用但麻烦,太多?了。

解决方法2:v-if

 <div class="main" v-if="detailData.mainPart">
     <detailSwipe :swipe-data="detailData.mainPart.topModule.housePicture.housePics" />
 </div>

不报错了。

以上是关于前端debug轮播图报错TypeError: Cannot read properties of undefined (reading ‘topModule‘)的主要内容,如果未能解决你的问题,请参考以下文章

matplotlib scatter画图报错:TypeError: ufunc ‘sqrt‘ not supported for the input types...rule ‘‘safe‘‘

pycharm用Debug 报错怎么解决?

高德地图报错

雷达图报错?

Flowable 流程图报错问题

Anaconda3使用matplotlib画图报错问题的解决方法