小探vue2中的动态组件

由 漆黑菌 于 2023年09月14日 发布

缘起

当前vue2项目中存在jsx和template混用的情况。发现可以通过

<component
    :is="{ render: $slots.default }"
/>

向component is中传递一个有render属性的render函数在template中渲染jsx生成的组件。

总结

当向is中传入object时,vue2会调用vue.extend创建一个vue component,所以render就可以用了。此时和一个有render选项的组件是一样的。所以理论上也可以拥有自己的data,props之类的……

代码位置

createElement createElement createComponent