
Element UI el-table 空数据显示“数据加载中”问题及解决
在使用 Element UI 的 el-table 组件时,当表格数据为空时,通常会显示“暂无数据”的提示。然而,有时即使 tableData 数据为空数组,界面仍然长时间显示“数据加载中”,无法正常显示“暂无数据”。
问题根源分析
此问题通常源于代码中其他地方使用了 v-loading 指令,导致即使 tableData 为空,加载动画仍然持续显示。
解决方案
-
移除或禁用
v-loading: 检查代码中是否使用了v-loading指令,并尝试将其移除或将其值设置为false。这将明确告知组件当前没有数据正在加载。 -
条件渲染
v-loading: 如果需要在数据加载过程中显示v-loading,请确保其仅在数据加载期间显示。可以通过一个布尔变量来控制v-loading的显示与隐藏。例如:
data() {
return {
tableData: [],
isLoading: true, // 数据加载状态
};
},
created() {
this.fetchData().then(() => {
this.isLoading = false;
});
},
methods: {
fetchData() {
// 你的数据获取逻辑
return new Promise((resolve) => {
setTimeout(() => {
// 模拟数据获取
this.tableData = []; // 或获取到的数据
resolve();
}, 1000);
});
}
}
在模板中:
-
正确初始化
tableData: 在组件的data或created生命周期中,将tableData初始化为空数组:
data() {
return {
tableData: [],
};
},
//或者
created() {
this.tableData = [];
}
这确保了组件在初始渲染时 tableData 为空,避免了“数据加载中”的误导性提示。
通过以上方法,您可以有效解决 el-table 空数据显示“数据加载中”的问题,并确保用户体验的流畅性。 记住,关键在于精确控制 v-loading 指令的显示时机,并正确初始化 tableData。










