【问题标题】:Tag <component> inside Vuejs template在 Vuejs 模板中标记 <component>
【发布时间】:2021-04-22 07:07:26
【问题描述】:

我刚开始学习 Vuejs,在我需要使用的单个文件组件中,有一个我不太清楚的结构:

<template>
   <component :is="user === undefined ? 'div' : 'card'"> 
  
   ...some code

   </component>
</template>

在什么情况下有用?为什么我们不能改用&lt;div&gt;

我在这里问这个问题是因为每次我用谷歌搜索 Vue component tag 我都会得到关于组件本身的信息,而没有任何标签相关的信息。

【问题讨论】:

    标签: vue.js vue-component


    【解决方案1】:

    &lt;component&gt; 用于需要根据某条信息(通常为prop)动态呈现特定标签(由:is 指定)。在您发布的示例中,您有两种情况:

    1. userundefined,因此将&lt;component&gt; 渲染为&lt;div&gt;
    2. user 不是undefined,因此将&lt;component&gt; 渲染为&lt;card&gt;

    &lt;card&gt; 很可能是具有自己特定模板和逻辑的自定义组件。

    【讨论】:

      【解决方案2】:

      &lt;component&gt; 是一个特殊的 vue 元素,它与is 属性结合使用。 它的作用是根据 is 属性中放置的内容,有条件地(并且动态地)渲染其他元素。

      <component :is="'card'"></component>
      

      将在 DOM 中呈现 card 组件。您的代码中显示的示例:

      <component :is="user === undefined ? 'div' : 'card'"> 
      

      当用户未定义时将呈现div,否则将呈现card 组件。

      这种行为是动态的,所以如果 user 从 undefined 变为 someghing else,vue 将从 DOM 中删除 div,并插入 card 组件。

      在 HTML 中,您永远不会看到名为 &lt;component&gt; 的节点,只会看到 divcard

      【讨论】:

      猜你喜欢
      • 2019-12-22
      • 1970-01-01
      • 1970-01-01
      • 2020-10-29
      • 2020-04-28
      • 1970-01-01
      • 2011-09-17
      • 2020-06-22
      • 1970-01-01
      相关资源
      最近更新 更多