当前位置: 首页 > article >正文

Vue 中,使用 v-for 和 v-if 在同一个元素上时,出现报错,怎么解决

直接上报错图:

上图所示,其实就是 因为 v-for 的优先级比 v-if 高,Vue 会先尝试遍历 v-for 里面,然后再检查 v-if 的条件,这可能会导致意外的行为或错误。

解决办法有两种:

1.常见办法,也就是编辑器提醒的,使用 template 包裹 v-for ,优先 v-if

<template>
  <el-table>
    <template v-if="approveInfo">
      <el-table-column v-for="item in plusRatio" :key="item" :prop="item.prop" :label="item.label">
        <!-- 列的内容 -->
      </el-table-column>
    </template>
  </el-table>
</template>

首先判断 approveInfo 的值,只有当 approveInfo 为 true 时,才会渲染 template 内部的元素。

2.使用计算属性来过滤数据

<template>
  <el-table>
     <el-table-column v-for="item in filteredPlusRatio" :key="item" :prop="item.prop" :label="item.label">
       <!-- 列的内容 -->
     </el-table-column>
  </el-table>
</template>

<script>
export default {
  data() {
    return {
      approveInfo: true,
      plusRatio: [
        { prop: 'ratio1', label: '比例 1' },
        { prop: 'ratio2', label: '比例 2' },
        // 其他数据
      ]
    };
  },
  computed: {
    filteredPlusRatio() {
      if (this.approveInfo) {
        return this.plusRatio;
      } else {
        return [];
      }
    }
  }
};
</script>

根据 approveInfo 的值决定是否返回 plusRatio 数组或空数组,确保只有在 approveInfo 为 true 时才渲染 el-table-column。

注意点

  1. 避免在 v-for 内部使用 v-if,因为 v-for 优先级高,会导致不必要的性能开销。
  2. 计算属性会根据依赖的响应式数据自动更新,确保逻辑的正确性。

http://www.kler.cn/a/500833.html

相关文章:

  • Elasticsearch:使用 Playground 与你的 PDF 聊天
  • 每天五分钟深度学习:神经网络中的激活函数
  • 矩阵求逆的几种方式
  • 极大似然估计笔记
  • 6.business english--updates
  • 蓝桥杯嵌入式速通(1)
  • 大语言模型训练的数据集从哪里来?
  • 在Node.js中借助腾讯云SDK调用混元大模型
  • Github 2025-01-10 Java开源项目日报Top8
  • Oracle 创建index时 自动收集index 统计信息 但partition index要特别注意
  • file与io流(2)
  • Linux下部署Redis(本地部署超详细)
  • 13. 罗马数字转整数
  • TypeScript Jest 单元测试 搭建
  • 使用Python和Neo4j驱动程序来实现小规模数据的CSV导入
  • 深入Android架构(从线程到AIDL)_22 IPC的Proxy-Stub设计模式04
  • GPT大模型下,如何实现网络自主防御
  • Python对接GitHub:详细操作指南
  • Docker与微服务实战2-基础篇
  • 【人工智能语音识别】——深入详解人工智能语音信号处理:理解语音信号的特征提取与表示
  • hive3后创建表默认是外部表问题
  • Spring整合SpringMVC
  • 电商项目-基于ElasticSearch实现商品搜索功能(四)
  • Kotlin 协程基础三 —— 结构化并发(二)
  • 国产3D CAD将逐步取代国外软件
  • Excel中身份证号码都变成E+乱码显示如何处理?