Vue 中el-table-column 进行循环,页面没渲染成功

文章目录


前言

实现效果:el-table-column 进行循环,使之代码简化

遇到的问题: data进行默认赋值,操作列的删除都可以出来,其他表格里面的数据没出来


效果图

示例:

代码示例

cpp 复制代码
<template>
    <div class="app-container">
        <el-row :gutter="20">
            <el-col>
                <div>数据条数: {{ recycleBinList.length }}</div>
                <el-table v-loading="loading" :data="recycleBinList" border style="width: 100%">
                    <el-table-column v-for="(column, index) in columns" :key="index" :prop="column.prop"
                        :label="column.label" align="center" :show-overflow-tooltip="true">
                        <template v-if="column.prop === 'caozuo'" slot-scope="scope">
                            <el-button size="small" type="danger" @click="handleDelete(scope.row)">
                                删除
                            </el-button>
                        </template>
                        <template v-else slot-scope="scope">
                            {{ scope.row[column.prop] }} <!-- 显示其他列的数据 -->
                        </template>
                    </el-table-column>
                </el-table>
            </el-col>
        </el-row>
    </div>
</template>

<script>
export default {
    name: "configAll",
    data() {
        return {
            columns: [
                { width: '200px', label: '编号', prop: 'numberID' },
                { width: 'auto', label: '唯一ID', prop: 'id' },
                { width: '150px', label: '操作', prop: 'caozuo' },
            ],
            loading: false,
            recycleBinList: [
                {
                    numberID: 1, id: 1, fileName: '111'
                }
            ],
        };
    },
    created() {
        console.log('组件 created 钩子执行',this.recycleBinList);
    },
    mounted() {
        console.log('组件 mounted 钩子执行',this.recycleBinList);
    },
};
</script>

看这个这个代码分析了半天才发现

可能出现的问题及原因

作用域理解混淆:

slot-scope用于在插槽中获取父组件传递过来的数据,它创建了一个特定的作用域,而v-if是基于 Vue 的响应式数据进行条件判断来决定元素是否渲染。当同时使用时,如果对它们各自的作用域以及数据的响应式变化机制理解不清楚,就容易出现渲染不符合预期的情况。

例如,在v-if判断中使用的变量,可能在slot-scope的作用域内不存在或者其值的变化没有被正确地监测到,导致元素渲染或隐藏的逻辑出现错误。
渲染顺序问题:

Vue 在解析模板时,对于v-if和插槽(包含slot-scope)的处理顺序可能会影响最终的渲染结果。如果v-if的条件判断依赖于插槽内传递的数据,而插槽数据的传递和解析顺序出现问题,就可能导致v-if的判断不准确,进而影响数据的正确渲染。

解决思路

明确作用域和数据来源:

仔细梳理slot-scope中接收到的数据结构以及在v-if判断中使用的变量来源。确保v-if中使用的变量是在slot-scope作用域内能够正确获取到的,并且是响应式的数据(如果需要响应式变化的话)。

cpp 复制代码
 <template slot-scope="scope">
    <div v-if="isCaozuoColumn(column.prop)">
       <el-button size="small" type="danger" @click="handleDelete(scope.row)">
              删除
                </el-button>
       </div>
    <div v-else>
   {{ scope.row[column.prop] }}
       </div>
     </template>```

总而言之:就是  ** slot-scope和v-if同时使用** 导致的数据渲染问题

**Ending...**
相关推荐
Lorin 洛林11 小时前
一文读懂 Agent Skills
前端·网络
newbe3652412 小时前
我们如何使用 impeccable 优化前端界面设计与实现稳定性
前端·人工智能·分布式·github·aigc·wpf
KaMeidebaby18 小时前
卡梅德生物技术快报|蛋白 N 端测序在重组贻贝融合蛋白表征中的应用,解决原核表达序列偏移工艺难题
前端·人工智能·物联网·算法·百度
kyriewen19 小时前
我筛了 1400 个 Claude Code Skills,留下 5 个天天在用的
前端·ai编程·claude
JNX_SEMI20 小时前
AT2401C 2.4GHz 全集成射频前端单芯片技术解析
前端·单片机·嵌入式硬件·物联网·硬件工程
anOnion20 小时前
Agentic 前端开发之 实时显示 AI Agent 终端输出
前端·javascript·人工智能
随风一样自由20 小时前
【前端领域】2026最新前端领域全梳理(框架/工具/AI/跨端/底层标准/就业趋势)
前端·人工智能·前端框架
这是个栗子20 小时前
【前端性能优化】优化数据加载:用 Promise.all 从串行到并行
前端·javascript·性能优化·异步编程·前端优化·promise.all
fei_sun21 小时前
黑洞路由(Null Route/空接口路由)
服务器·前端·javascript
大爱一家盟21 小时前
告别卡点BGM同质化 2026原创卡点音乐素材下载网站 TOP5 推荐
大数据·前端·人工智能