Vue 动态组件何时加载完毕
发布于 1 个月前 作者 huaer 176 次浏览 来自 问答
粉丝福利 : 关注VUE中文社区公众号,回复视频领取粉丝福利

想在动态组件dom渲染完后dosomething,未找到对应的钩子函数。

补充:我要做的操作需在父组件内完成。

应该如何做合适,求解.

<component :id="item.id" :is="item.componentCode" />

最简单的方法就是弄个定时器,判断dom.item.id是否已存在,若已存在表面dom渲染完毕。

但这样总归不够优雅.

8 回复

文档中有个Updated+$nextTick是不是你想要的效果?

在Item.componentCode里面写生命周期也没有效果吗?

如果操作需要在父组件操作的话可以从子组件往上通知一个事件 然后又父组件进行@可以吗

我最开始想的确实就是这两个,但是不知道为什么,Updated会触发两次,第一次子组件的高度渲染总是为5,第二次就是正确的高度了

绑定一个事件,指向父组件的一个方法,在父组件方法中使用nextTick呢

触发两次可能是你修改了数据导致再次更新了吧?
你是要读取组件渲染后的高度吧?你的数据是异步产生的吗?第一次可能是你还没获取到数据时渲染的高度,第二次可能是得到数据后再渲染的高度

是的,我就是想获取渲染后的子组件内容高度

1、可以给子组件传递一个方法,当子组件加载完成,emit 这个方法就好了。

2、至于子组件渲染完成,可以 watch 一个变量,当dom加载完成时,把变量设置为true, 而且当变量为true的时候, 用 nextTick 之后 emit 传递的方法即可

回到顶部