PHP中,当我们包含来自另一个文件的代码时,我们包含了它,就这样,代码现在可以在我们执行包含的文件中使用.但在Vue.js年,在进口一个组件之后,我们还必须出口它.

为什么?我们为什么不直接进口呢?

推荐答案

Vue.js年,在导入一个组件后,我们还必须将其导出.

我想你可能会参考User.vue中的以下几行,想知道为什么UserDetailUserEdit会被导入到文件中,然后在脚本导出的components属性中导出:

import UserDetail from './UserDetail.vue';
import UserEdit from './UserEdit.vue';

export default {
  components: {
    appUserDetail: UserDetail,
    appUserEdit: UserEdit
  }
}

vue-loader希望.vue文件的脚本导出包含组件的定义,该定义实际上包括组装组件模板的配方.如果模板包含其他Vue组件,则需要提供其他组件的定义,否则称为component registration.如@Sumurai8所示,.vue个文件的导入本身并不注册相应的单文件组件;相反,这些部件必须在进口商的财产中明确注册.

例如,如果App.vue包含<user />User.vue的模板被定义为:

<template>
  <div class="user">
    <app-user-edit></app-user-edit>
    <app-user-detail></app-user-detail>
  </div>
</template>

<script>
export default {
  name: 'user'
}
</script>

...User组件将呈现为空白,您将看到以下控制台错误:

[Vue warn]: Unknown custom element: <app-user-edit> - did you register the component correctly? For recursive components, make sure to provide the "name" option.
[Vue warn]: Unknown custom element: <app-user-detail> - did you register the component correctly? For recursive components, make sure to provide the "name" option.

demo 1

当Vue试图在App.vue的模板中渲染<user />时,Vue不知道如何解析内部<app-user-detail><app-user-edit>,因为它们的组件注册丢失.这些错误可以通过User.vue中的局部组件注册来解决(即,上面显示的components属性).

或者,可以使用UserDetailUserEdit中的global component registration来解决错误,这将避免User.vue中的本地注册.请注意,必须在创建Vue实例之前进行全局注册.例子:

// main.js
import Vue from 'vue';
import UserDetail from '@/components/UserDetail.vue';
import UserEdit from '@/components/UserEdit.vue';

Vue.component('app-user-detail', UserDetail);
Vue.component('app-user-edit', UserEdit);

new Vue(...);

demo 2

Vue.js相关问答推荐

设置Vite Vue 3需要多个应用程序输出目录

如何在 vue2.7 中删除 slot-scope

vue js导航到带有问号的url

Vue:根元素内容和内容分发槽

无需直接 DOM 操作即可绘制d3-axis

在 Vue 项目之间共享assets和组件

有条件地在 Vue 中添加一个 CSS 类

在 vue.js 中获取当前时间和日期

Vue.js + Vuex:如何改变嵌套项状态?

如何有条件地更改 vue/vuetify 文本字段 colored颜色

VueJS 禁用特定属性的react性

使用 Vee-Validate 在提交时验证子输入组件

Vuejs 3 从子组件向父组件发出事件

Vue-i18n '无法读取 Proxy.Vue.$t 处未定义的属性 '_t'

如何告诉 Vue-cli 我的应用程序的入口点在哪里?

Vue3在按钮单击时以编程方式创建组件实例

Vuetify 数据表不显示数据

Vue.js react性如何在幕后工作?

Vuex Mutation 正在运行,但组件在 vue 开发工具中手动提交之前不会更新

理解 Vue 中的this关键字