如何将 Vue 组件“导入”到 Vue 组件中

Posted

技术标签:

【中文标题】如何将 Vue 组件“导入”到 Vue 组件中【英文标题】:How to 'import' a Vue component into a Vue component 【发布时间】:2017-05-18 13:03:36 【问题描述】:

这可能是一个非常愚蠢的问题,但尽管如此,我还是找不到答案。

所以,我正在构建一个 Vue 组件,并希望在我的组件中访问 vue-spinner 的组件。我该怎么做?

这里是相关代码的 sn-ps:

app.js

Vue.component('players', require('./components/TeamPlayersComponent.vue'));

import GridLoader from 'vue-spinner/src/GridLoader.vue';

const app = new Vue(
    el: '#app',
    components: 
        GridLoader
    
);

TeamPlayersComponent.vue

<grid-loader></grid-loader>

假设已经安装了 vue-spinner (NPM) 并且 TeamPlayersComponent.vue 是有效的并且工作正常,除了在控制台中给出这个错误:

vue.js?3de6:525 [Vue warn]: Unknown custom element: <grid-loader> - did you register the component correctly? For recursive components, make sure to provide the "name" option. (found in component <players> at /home/vagrant/code/rounds-smaa/resources/assets/js/components/TeamPlayersComponent.vue)

我将 Vue 与 Laravel Elixir 和 Gulp 一起使用。

【问题讨论】:

您是否尝试过documentation 中建议的任何方法。请分享您到目前为止所尝试的内容。 问题已更新,谢谢。 【参考方案1】:

我认为你应该在 TeamPlayersComponent.vue 文件中本地注册组件。导入组件并在文件中注册。

    import gridLoader from 'vue-spinner/src/GridLoader.vue'

然后在本地注册组件。

    components: 
                gridLoader
               

【讨论】:

【参考方案2】:

您也可以按如下方式导入:

import grid-loader from "vue-spinner/src/GridLoader.vue";

然后在你要导入它的组件中:

components:  grid-loaderfrom 

【讨论】:

【参考方案3】:

解决方案:

将 app.js(Laravel 设置)中的 GridLoader 特定代码替换为:

Vue.component('grid-loader', require('vue-spinner/src/GridLoader.vue'));

按预期工作!

【讨论】:

【参考方案4】:

您可以通过以下方式获取:

var PulseLoader = require('vue-spinner/src/PulseLoader.vue');

并将其添加到组件中:

new Vue(
  components: 
    'PulseLoader': PulseLoader
  
)

【讨论】:

以上是关于如何将 Vue 组件“导入”到 Vue 组件中的主要内容,如果未能解决你的问题,请参考以下文章

如何将函数导入 Vue 组件?

如何将外部 HTML 模板动态导入和解析到 Vue 组件中?

如何将导入的gem中的vue组件加载到rails中的lib目录?

如何在 vue 组件中导入 CSS 文件,范围仅限于组件?

如何将 svg 文件导入 Vue 组件?

在 Vue.js 中,如何滚动到导入的组件?