javascript - Vue.js 组件嵌入到另一个组件时不会出现
问题描述
我有一个标题、徽标、菜单和菜单项。
菜单项包含文本“这是一个菜单项”,但 vue 没有处理和显示它。
这些是组件:
应用程序.vue
<template>
<div id="app">
<mainHeader />
</div>
</template>
<script>
import mainHeader from './components/mainHeader.vue'
export default {
name: 'App',
components: {
mainHeader
}
}
</script>
<style>
html,body{
box-sizing: border-box;
margin:0px;
padding:0px;
}
#app{
background-color:gray;
}
</style>
./components/mainHeader.vue
<template>
<div id="main-header">
<logo />
<mainMenu />
</div>
</template>
<script>
import logo from "./logo.vue";
import mainMenu from "./mainMenu.vue";
export default
{
name: 'mainHeader',
components:
{
logo,
mainMenu,
}
}
</script>
./components/mainMenu.vue
<template>
<div id="main-menu">
<menuItem />
</div>
</template>
<script>
import menuItem from "./menuItem.vue";
export default
{
name: "mainMenu",
components:
[
menuItem
]
}
</script>
./components/menuItem.vue
<template>
<div class="menu-item">
This is a menu item
</div>
</template>
<script>
export default
{
name: "menuItem"
}
</script>
当我检查 DOM 时,menuItem 没有被解析为带有消息的 div:
<div id="app">
<div data-v-ea6a1e94="" id="main-header">
<div data-v-4b16403b="" data-v-ea6a1e94="" id="logo"></div>
<div data-v-d2968a70="" data-v-ea6a1e94="" id="main-menu">
<menuitem data-v-d2968a70=""></menuitem>
</div>
</div>
</div>
我怎样才能让组件工作?
解决方案
components 选项有一个对象作为值:
components:{
menuItem
}
建议使用 kebab-case 命名组件:
name: "menu-item"
和 CamelCase 的文件名MenuItem
并像这样导入它:
import MenuItem from "./MenuItem.vue";
然后像这样注册它:
components:{
MenuItem
}
最后像这样使用它<menu-item ... />
推荐阅读
- django - 具有可为空的布尔值的 Django 模板默认过滤器
- angular - 如何在 ng6 中使用 ngClass 将字段标记为有效/无效
- css - 如何截断 vue-multiselect 中的选项?
- javascript - 如何使用“翻译”查找元素?我有一个共同的班级名称。所以,我不能使用类名来查找元素
- cron - 10 个参数 CRON TASK (IBM Maximo) 工作日
- java - 拆分字符串而不破坏单词或忽略任何字符
- javascript - Angular:ngOnChanges 没有检测到更改?
- excel - 将 VBA 代码应用于每个单元格以格式化另一个单元格
- symfony-forms - Symfony 4.1:动态多对多实体类型
- google-cloud-platform - GCP 上的 VPC 网络