18910140161

看了一天源码还是没找到解决方案,keep-alive组件接收的children为什么是数组

顺晟科技

2022-09-03 12:49:16

122

看了一天源码还是没找到解决方案,有没有路过的大佬赏脸看一下,给菜B亿点点的解答,源码实在看吐了


顺晟科技:

问题keep-alive组件的vnode接收的children为什么是数组,而我抽出来的keep-alive接收的却是对象,我抽出的keep-alive在正常情况下是能用的,但是在transtion组件内是就报错了,他的vnode的children居然是null,太奇怪了

至于 “vnode的children居然是null”,答案也在这段源码里

因为内置的 keep-alive 和 transition 有一些 py 交易,显然没带你玩

在 transition 里有特意判断 KeepAlive 时保留占位,以避免像其他组件一样被销掉

感谢回答,今天我又看了一天逻辑,发现他内部的生成vnode中的处理方式是内部先把keep-alive的vnode给加载出来,这样编译出来的vnode里,keep-alive是有vnode了,也有他包裹的子元素,但我抽出来的keep-alive他是当做一个组件处理,每次加载到这里,他还需要调用一次slot.default()来生成vnode才能获取子元素。 造成的结果就是transtion取不到keep-alive包裹的子元素,哎,不改源码没法用

萌新路过

现在感觉还是vue2友好点,起码源码没这么复杂

相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航