最近发现了一个ElementUI的小问题,就是会出现mounted中拿不到elementUI组件的DOM元素的情况出现。我的情景如下:
在使用
el-table
组件时有一个需求就是有一列是一个输入框,所以我使用了插槽。后来有一个操作是需要操作输入框的DOM的,所以我就在原生事件中获取了一下,这个时候是没问题的,后来我想到获取的值可能复用所以想拿到mounted里赋值,不过拿到的结果是一个空数组。
我还是感觉挺不可思议的,因为mounted只有在DOM都渲染完毕后才会触发,不会出现取不到DOM的情况。我刚开始想的是可能组件内部还没有渲染DOM完毕,不过应该不太可能,因为只有子组件内部的mounted处触发完毕后外面的父组件的mounted才会触发,所以这个原因不大可能是。
在经过我的断点以后我发现,在进入mounted的时候,表格只渲染了表头且这个时候表头只有DOM结构并没有数据,所以我猜想elementUID的组件只有表头,表格是后续跟据数据生成的,所以mounted阶段是只能拿到表头的。
这里原因找到了,但是不是很好解决,好像还是得靠使用原生的DOM获取。