Vue 'is' 属性


示例

这个is属性连接到计算值“activeComp”v-bind(简写:),以便显示“comp-one”组件或“comp-two”组件。

App.vue:

<template>
  <h1>Dynamic Components</h1>
  <p>App.vue switches between which component to show.</p>
  <button @click="toggleValue = !toggleValue">Switch component</button>
  <component :is="activeComp"></component>
</template>
运行示例 »

请参阅下面的更多示例。


定义和用法

这个is属性可用于三件事:

1.动态组件:这个is属性设置在内置<component>元素来创建动态组件,其中is属性定义哪个组件应该是活动组件。

更详细地说,is属性绑定到属性v-bind,该属性保存应该是活动组件的名称。 (参见上面的例子)

2. 用 Vue 组件替换原生元素:is="vue:my-component"放置在原生 HTML 元素上以将其替换为 Vue 组件。 (参见示例1)

如果我们不使用vue:前缀,它将被解释为自定义的内置元素,如下文所述,并且不会插入 Vue 组件。

3. 定制内置元素:可以用 JavaScript 编写自定义的内置元素,并且is属性可以用在 HTML 标签上,将其定义为自定义的内置元素。这不是 Vue 的功能。


更多示例

示例1

使用is属性来替换<img>带有 Vue 组件的标签。

App.vue:

<template>
  <h2>Example Built-in 'is' Attribute</h2>
  <p>The IMG tag below is set to be replaced by a component by the use of 'is="vue:child-comp"'.</p>
  <img is="vue:child-comp" />
</template>

ChildComp.vue:

<template>
  <div>
    <h3>ChildComp.vue</h3>
    <p>This is the child component</p>
  </div>
</template>

<style scoped>
div {
  border: solid black 1px;
  background-color: lightgreen;
  padding: 10px;
  max-width: 250px;
  margin-top: 20px;
}
</style>
运行示例 »

相关页面

Vue教程:动态组件

Vue教程:Vue 组件

Vue教程:Vue 计算属性

Vue教程:Vue v-bind 指令

Vue参考:Vue v-bind 指令

Vue参考:Vue <组件> 元素

Vue参考:Vue $refs 对象