关于 vue 渲染报错:属性 undefined页面可渲染

日期:2019 年 9 月 26 日

关于 vue 渲染报错:属性 undefined

vue-render.png

情景再现

事情的经过是这样的,我在定义数据的时候定义的是一个空的数组,之后通过某种操作往里面丢一个一个的对象,字段都在这些对象里面,然后渲染的时候,我直接去取数据,但由于数组前期没有值,后面才有的值,而页面渲染刚的时候还没有拿到这个值,所以才出现了上述的场面,这种情况在接口调用的时候尤为常见,当发起异步请求的时候,数据在页面渲染的时候还没到位,所以就会报上述错误

<template>
     //  ...
    <div v-for="(item,$index) in repetitionList[currentNumber].questions" class="main" :key="$index">
            // ....
    </div>
    // ...
</template>

<script>
    export default {
           data(){
            return{
                repetitionList: [],
                dynamicValidateFormType: {  
                        topicNumber: 0,
                        topicContent: '类型名称',
                        typetopic: 'QuestionType',
                        sequence: '',
                        questions: [],
                    },
                }
           },
           methods: {
            // ...
            insertTypeIntoList: function(){
                    var ques = JSON.parse(JSON.stringify(this.dynamicValidateFormType));
                    this.repetitionList.push(ques);
                }
           },
    }
</script>
解决方案
方案一

如果是个单一的对象的话,要是提前就知道里面有哪些字段,可以在定义的时候直接显示的声明出来就可以了

方案二

在节点上用 if 判断一下,当有数据的时候在进行渲染即可

<template>
     //  ...
     
    <div v-if="repetitionList[currentNumber] && repetitionList[currentNumber].topicContent">
        <div v-for="(item,$index) in repetitionList[currentNumber].questions" class="main" :key="$index">
                    // ....
            </div>
    </div>
    
    // ...
</template>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,你遇到了一个Vue报错:TypeError: Cannot read properties of undefined (reading 'message')。这个错误通常发生在尝试读取未定义的属性时。解决这个问题的方法有很多种,以下是一些常见的解决方案: 1. 检查变量是否被正确定义:确保你正在访问的属性在使用之前已经被正确地定义和赋值。如果属性未定义或者为null,就会出现这个错误。 2. 确保正确引入Vue模块:如果你使用了Vue的相关功能,确保你已经正确地引入了Vue模块。你可以通过检查Vue的版本和安装方式来确认。 3. 检查组件的生命周期钩子函数:如果你在组件的生命周期钩子函数中访问了未定义的属性,那么可能会导致这个错误。确保你在正确的生命周期阶段访问属性。 4. 检查模板中的属性访问:如果你在模板中访问了未定义的属性,也会导致这个错误。确保你在模板中正确地绑定了属性,并且属性已经被正确地定义和赋值。 5. 使用条件渲染:如果你在渲染过程中使用了条件渲染(例如v-if或v-show),确保你在渲染之前对属性进行了正确的判断,以避免访问未定义的属性。 6. 检查错误信息:在错误信息中,有时会提供更具体的错误提示,例如指出具体是哪个属性未定义。你可以根据错误信息来定位和解决问题。 总结起来,解决这个错误的关键是确保你正在访问的属性已经被正确地定义和赋值。如果以上方法都没有解决你的问题,你可以提供更多的代码和错误信息,以便我们能够更好地帮助你解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值