报错:Property or method “xxx“ is not defined on the instance but referenced during render.

报错原文:

Property or method "tableData" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property.

翻译:

属性或方法“tableData”不是在实例上定义的,而是在呈现期间被引用的。通过初始化该属性,确保该属性是响应性的,无论是在data选项中,还是在基于类的组件中。

分析:这个错误的解释很明确,属性“tableData”并没有在“Data”中定义,而是直接在页面初始化的过程中对其进行赋值并在页面中引用其数据。这样的报错会使“tableData”中的数据显示不正常。这个时候我们只要data中定义好“tableData”就解决了,笔者是忘记写了,但当时看到这个报错就很懵,查了一下网上的博文,自己总结一下。

例:

data() {
    return {
      form: {
        className: '',
        coachId: '',
        classType: ''
      },
      pagi:{
        count:10,
        start:1
      },
      drawer: false,
      coachList:[],
      // tableData:[]    //data中未定义该属性!!
    }
  },

methods: {
    async getClassData(){
      let params = {...this.pagi}
      for(let i in this.form){
        if (this.form[i] !== '') {
          params[i] = this.form[i]
        }
      }
      await classList(params).then(res => {
          this.tableData = res.data.data   
//data中未定义该属性!!在created/mounted中调用getClassData函数,即产生报错                                                                          
        }
      })
    },
}

因为无法确保该属性在挂载前已经初始化,不能保证该属性是响应式的,有的时候这种错误写法带来的报错不会对页面展示有任何影响,有时反复刷新页面数据会时而正常显示,时而不显示,有的时候则反复刷新也完全无法显示。这取决于你的代码是否在引用该属性前初始化该属性。然而在正常开发中,这种不可控因素不可容忍,所以遇到问题一定要仔细研究解决,不要糊弄或者瞎实验、撞大运,做好沉淀,才能有进步!

小白文章,有错欢迎批评!

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值