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相关问答推荐

VueJS使所有组件崩溃,而不是只有一个

使用V-TOOLTIP(实例化)使工具提示在V-文本字段中显示清晰的图标

当try 更新 Vue 3 中的关联数组中的单个元素时,所有值都会更新

Vue Js Composition Api 未定义(读取名称)

将媒体源/流绑定到视频元素 - Vue 3 组合 API

如何使用 vuejs 在浏览器 url 中获取当前 product.id 的详细信息

webpack vue-loader 配置

如何在Typescript语言Vuejs中使用watch功能?

如何将对象作为props传递并让组件更新子对象

Vue 和 Bootstrap Vue - 动态使用插槽

VueJS + Typescript:类型上不存在属性

Laravel 事件未广播

Jest错误找不到模块....

npm run dev 和 npm run production 的区别

'不提供名为'createRouter'的导出'' vue 3、vite 和 vue-router

中文而不是英文的Element UI分页

在 Vue 单元测试中单击按钮时触发表单提交

Vue v-model 不响应 BS4 单选按钮组

使用 vuex-persistedstate 仅使一个模块持久化

如何在 vue 组件中使用 vuex?