首页 > 解决方案 > 关于函数 _createElement() 中 Vue.js 源码的一个问题

问题描述

_createElement,我想问一下是否data.is一样v-bind:is

https://github.com/vuejs/vue/blob/0baa129d4cad44cf1847b0eaf07e95d4c71ab494/src/core/vdom/create-element.js#L64

为什么tag = data.is

感谢每一位答主!

代码图片

标签: vue.jsvue-component

解决方案


正如代码中的注释所暗示的那样,该行专门用于处理is包含在 object中的情况v-bind。例如:

<component v-bind="{ is: 'button' }">Button</component>

您可以通过在浏览器中的该行设置断点来亲眼看到这一点。我正在使用 Webpack 和 Chrome,相关文件出现webpack:///./node_modules/vue/dist/vue.esm.jsSources选项卡下。快速搜索_createElement并单击边距以设置断点。

在上面的示例中,该is值旨在用作tag,而component只是一个可以丢弃的虚拟标签。

上面的语法等价于:

<component is="button">Button</component>

或者:

<button>Button</button>

但是,这两个示例都不会进入相关if部分。在这其他两种情况下,tag在此之前已经正确解决。


推荐阅读