以前一直以为v-if和v-else渲染的元素就应该是独立的,直到前几天渲染一个自定义的组件,v-if和v-else都引入了,例如
<a-form-item v-if="type===1">
<my-select/>
</a-form-item>
<a-form-item v-else>
<my-select/>
</a-form-item>
我以为的是切换type会是2次渲染,组件created()也应该是调用2次,然而,只调用了1次,当时不知道原因
今天再看vue文档时发现:vue 会尽可能高效地渲染元素,通常会复用已有元素而不是从头开始渲染

也就是说2个模块的内容使用的是相同的元素,则vue是直接复用,而不是从头渲染
如果你不想要复用,则在那个组件上添加key属性就可以了

本文探讨了Vue中v-if和v-else的条件渲染机制,并解释了当使用相同组件时,Vue如何通过复用元素提高渲染效率,避免不必要的组件实例化。同时介绍了如何通过添加key属性来控制组件是否复用。
671

被折叠的 条评论
为什么被折叠?



