首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组件标记内的“未知自定义元素”警告,但不在其外部。

组件标记内的“未知自定义元素”警告,但不在其外部。
EN

Stack Overflow用户
提问于 2017-09-12 10:17:23
回答 2查看 9.6K关注 0票数 7

我创建了这样一个组件:

代码语言:javascript
复制
<template>
  <span class="my-icon">
    <img :src="iSrc" :alt="iname"/>
  </span>
</template>

<script>
  export default {
    props: ['iname'],
    computed: {
      iSrc() {
        return require('../../../assets/images/' + this.iname + '.png')
      }
    }
  }
</script>

在这样的页面中使用它:

代码语言:javascript
复制
<template>
  <div>
    <h3>Share it:</h3>
    <social-sharing inline-template network-tag="a">
      <div class="my-icons">
        <network network="facebook" class="fb-icon">
          <icon name="fb" />        
        </network> 
      </div>
    </social-sharing>
  </div>
</template>

<script>
  import Icon from '~/comps/icon.vue'
  export default {
    components: {
      Icon
    }
  }
</script>

但是它抛出了这个错误:

Vue警告:未知的自定义元素:-正确注册组件吗?对于递归组件,请确保提供"name“选项。

<social-sharing>组件来自Vue插件。如果我在<icon>标记之外使用<social-sharing>组件,它可以正常工作,但在内部它会抛出错误。

EN

回答 2

Stack Overflow用户

发布于 2017-09-12 12:18:02

这是因为您在<social-sharing>组件上使用了<social-sharing>特殊属性。

来自文档

当内联模板特殊属性出现在子组件上时,组件将使用其内部内容作为模板,而不是将其视为分布式内容。

<social-sharing>标记中的所有内容都被视为该组件的模板定义。而且,由于您的<icon>组件是在<social-sharing>组件的作用域之外注册的,所以它不知道如何处理<icon>标记。

由于<social-sharing>组件看起来依赖于inline-template定义,所以我认为唯一能做的事情就是全局注册<icon>组件:

代码语言:javascript
复制
// in your main.js file
import Icon from '~/comps/icon.vue'
Vue.component('Icon', Icon);

然后,由于<icon>组件将位于全局范围内,因此<social-sharing>组件将具有对它的引用。

票数 12
EN

Stack Overflow用户

发布于 2018-06-27 01:36:31

我只是忘了关闭组件中的脚本标记。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46173821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档