前端解决 “TypeError: Cannot read properties of undefined (reading ‘xxx‘)的多种情况

问题描述:控制台报错“TypeError: Cannot read properties of undefined (reading ‘xxx‘)“

例如:TypeError: Cannot read properties of undefined (reading '$el')     at eval

原因分析及解决

情况一:
出现该错误的原因是因为你花括号中的某些属性未定义。极大可能是因为你写错了属性名称

情况二:
异步请求获取数据时,由于数据时异步获取的,所以一开始是没有该数据属性,这种情况下也会报这种错误。比如说我这里有一个数据tableData,初始值为一个空对象。我们在使用{{tableData.detail}}是不会报错的,但如果是{{tableData.detail.name}}这样就会报错了,这是为什么呢?
因为,tableData.detail已经是一个undefined了,你undefined.name就肯定会报错了。
所以在初始化时,detail属性赋值为空对象就行了。

情况三:

后端返回给你的数据没有这个属性 或者 返回的有的有数据有的是null

这个时候需要先查一下,可以加v-if进行判断

情况四:

使用$nextTick,刷新表格的时候,表格未自定义属性,或自定义属性引用错了(因为方法是现成复制过来的找了老半天,坑!)

<template>
// 起初没有定义ref="multipleTable"
 <el-table ref="multipleTable" :data="tableData" style="width: 100%" :header-cell-style="{ 
  background: '#f5f7fa' }">

 </el-table>
</template>

 methods: {
       getData() {
        let params = {
          ...this.queryFrom
        }
        params.pageNo = params.pageNo.toString()
        params.pageSize = params.pageSize.toString()
         getSettlementOrder(params).then(res => {
          this.tableData = res.result.data || []
           // 在数据更新后执行刷新表格
           this.$nextTick(() => {
            // myTable是表格的ref属性值
            if (this.$refs.multipleTable && this.$refs.multipleTable.doLayout) {
              this.$refs.multipleTable.doLayout();
            }
          })
          this.total = res.result.total || 0
          this.tabHeight = window.innerHeight - this.$refs.multipleTable.$el.offsetTop - 170;
        })
      },

  • 70
    点赞
  • 114
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
当控制台报错"TypeError: Cannot read properties of undefined (reading 'xxx')"时,这意味着你正在尝试读取一个未定义的属性。这可能是因为你正在访问一个对象或数组的属性,但该对象或数组为undefined或null。 解决这个问题的方法有几种: 1. 首先,检查你的代码中是否有错误或逻辑问题导致了变量为undefined或null。可以通过在报错的地方打印相关变量的值来进行调试。确保变量在使用之前已经正确初始化或赋值。 2. 如果你在异步操作中遇到这个错误,比如在渲染页面时异步获取数据,确保在获取到数据之前不要访问该数据的属性。可以使用条件语句或者使用可选链操作符(?.)来避免访问未定义的属性。 3. 另外,你还可以使用try-catch语句来捕获这个错误,并对其进行处理,以防止错误导致整个应用程序崩溃。 总之,当出现"TypeError: Cannot read properties of undefined (reading 'xxx')"错误时,首先需要检查代码中是否存在未定义的变量或属性,并确保在访问属性之前进行必要的初始化和安全检查。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [前端解决TypeError: Cannot read properties of undefined (readingxxx‘)的多种情况](https://blog.csdn.net/sunwenpinglike/article/details/129690571)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Vue3:Uncaught (in promise) TypeError: Cannot read properties of undefined (readingxxx‘)](https://blog.csdn.net/millia/article/details/130846689)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值