【前端】记录各种控制台警告/bug

一、Element Plus

1、控制台警告:"Runtime directive used on component with non-element root node. The directives will not function as intended."

错误原因:在 Vue 组件上使用了运行时指令(指那些在运行时动态绑定到 DOM 元素上的指令),但是该组件的根节点不是一个标准的 DOM 元素(例如 div 或 span)

原因:自定义指令不能放到组件上,而是要放到自有的元素上。

解决方法

1.找到报警告的位置, 确认组件的根节点是否为一个有效的 DOM 元素

2.运行时指令:v-loading、v-show、v-if...

3.如下图示例:el-dialog上不能使用自定义指令v-loading

Element UI 和 Element Plus 中的 el-dialog组件本身是一个封装好的组件,它有自己的内部结构和生命周期。当你尝试在 el-dialog 上使用 v-loading指令时,可能会遇到一些问题,主要是因为 v-loading 指令期望的是一个标准的 DOM 元素,而 el-dialog的根节点可能不是这样的元素。

2、Ignored: ResizeObserver loop limit exceeded

element-plus 使用el-table 在切换tab栏时报错:

原因:ResizeObserver不能处理所有的observations导致报错;

解决方法:

1.阻止table的重绘,给每个<el-table-column>设置固定的width,缺点是无法自适应宽度。

2.给每个<el-table-column>设置min-width

3.添加debounce()防抖方法,在App.vue文件中添加:

javascript 复制代码
  const debounce = (fn, delay) => {
  let timer = null;
  return function () {
    let context = this;
    let args = arguments;
    clearTimeout(timer);
    timer = setTimeout(function () {
      fn.apply(context, args);
    }, delay);
  }
}

const _ResizeObserver = window.ResizeObserver;
window.ResizeObserver = class ResizeObserver extends _ResizeObserver{
  constructor(callback) {
    callback = debounce(callback, 16);
    super(callback);
  }
}

4.给回调进行节流,在App.vue中添加以下代码:

javascript 复制代码
// 解决 ElTable 自动宽度导致的「ResizeObserver loop limit exceeded」问题
const fixElTableErr = (table) => {
    const oldResizeListener = table.methods.resizeListener;
    table.methods.resizeListener = function () {
        window.requestAnimationFrame(oldResizeListener.bind(this));
    };
};
// 在Vue.use之前执行此函数
fixElTableErr(Table);
相关推荐
一只小阿乐3 小时前
react 封装弹框组件 传递数据
前端·javascript·react.js
533_4 小时前
[element-plus] el-tree 动态增加节点,删除节点
前端·javascript·vue.js
禁止摆烂_才浅4 小时前
前端开发小技巧-【JavaScript】- 获取元素距离 document 顶部的距离
前端·javascript·react.js
wshzd4 小时前
LLM之Agent(二十九)|LangChain 1.0核心组件介绍
前端·javascript·langchain
程序猿_极客4 小时前
Vue 2脚手架从入门到实战核心知识点全解析(day6):从工程结构到高级通信(附代码讲解)
前端·javascript·vue.js·vue2学习笔记
q***71854 小时前
海康威视摄像头ISUP(原EHOME协议) 摄像头实时预览springboot 版本java实现,并可以在浏览器vue前端播放(附带源码)
java·前端·spring boot
一只小阿乐4 小时前
vue3 使用v-model开发弹窗组件
javascript·vue.js·elementui
web加加4 小时前
vue3 +vite项目页面防f12,防打开控制台
前端·javascript·vue.js
A尘埃5 小时前
大模型应用python+Java后端+Vue前端的整合
java·前端·python
遥遥晚风点点6 小时前
Spark导出数据文件到HDFS
前端·javascript·ajax