Uncaught (in promise) TypeError: Cannot read properties of undefined (reading ‘toggleRowSelection‘)

Element UI 的 Table 表格默认多选报错

在这里插入图片描述

该报错是由Table组件还没有完成页面渲染导致无法调用ReftoggleRowSelection方法所引发的
通常我们可以加一个nextTick或者setTimeout解决。

const multipleTableRef = ref() //绑定在Table上的Ref
const toggleSelection = rows => {
  rows.forEach(row => {
    multipleTableRef.value!.toggleRowSelection(row, true)
  })
}

onMounted(() => {
  nextTick(() => {
    toggleSelection(tableData.value)
  })
})

但是还有一种特殊情况就是Table写在了Dialog或者Drawer容器里,这样即便是页面完成渲染,但是因为弹窗或抽屉并没有展示,Table组件也就无法完成渲染仍然是无法调用ReftoggleRowSelection方法。
现在导致问题的根源找到了,因此只需要把初始化默认多选的代码挪到DialogDraweropen事件里去执行即可

const visible = ref(false)
const openDialog = () => {
  visible.value = true
  nextTick(() => {
    toggleSelection(tableData.value)
  })
}
 <el-dialog v-model="visible" @open="openDialog">
      <!-- Table相关代码 -->
      <!-- ...... -->
 </el-dialog>
  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'randomExtend') 错误是由于在发起异步请求时,对象还未定义导致的。这个问题在vue过程中遇到的问题里有提到过。当浏览器开始加载对象时,该对象尚未定义,所以无法读取返回的属性值。解决这个问题的方法是使用箭头函数而不是匿名函数。通过将匿名函数更改为箭头函数,可以确保在对象加载之前就能立即处理promise并返回值。 另外一个类似的错误是Uncaught (in promise) TypeError: Cannot read property 'removeChild' of null。在这种情况下,可以在v-for语句后添加一个条件语句以解决这个问题。例如,可以在v-for的元素外面包裹一个div元素,并在该div元素内部添加一个条件语句,以确保只有在对象存在时才执行相应的操作。 还有一种类似的错误是Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'code')。这个问题是由于在自定义拦截器中忘记将promise对象返回导致的。正确的处理方法是确保将promise对象return出去,以便在调用该方法时能够异步执行,并且不会出现语法错误。 综上所述,当出现Uncaught (in promise) TypeError: Cannot read properties of undefined的错误时,可以尝试以下解决方法: 1. 检查异步请求的对象是否已经定义,如果没有定义,可以使用箭头函数确保在对象加载之前就能立即处理promise并返回值。 2. 如果出现类似于'removeChild' of null 的错误,可以在相应的语句后面添加条件语句,以确保只有在对象存在时才执行相应的操作。 3. 对于类似于Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'code')的错误,应该检查自定义拦截器是否正确地将promise对象return出去。 希望以上信息对您有帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值