我有一个补充工具栏组件,我想使用两次,但是其中包含其他组件。
我真的很想这样工作:
<template>
<Sidebar class="left-0">
<ExampleComponentA/>
</Sidebar>
<Content/>
<Sidebar class="right-0">
<ExampleComponentB/>
</Sidebar>
</template>
Vue是否有可能,或者我真的需要一个SidebarLeft
和一个SidebarRight
组件吗?
<template>
<SidebarLeft class="left-0"/> <!-- <ExampleComponentA/> is in this Component -->
<Content/>
<SidebarRight class="right-0"/> <!-- <ExampleComponentB/> is in this Component -->
</template>
我为什么要那样做?
嗯,我的补充工具栏的设置是相同的,只是content
不同。因此,我不需要重复孔补充工具栏。
尝试使用slots
实现相同的效果。
// App.vue (Parent component)
<template>
<div id="app">
<HelloWorld msg="Hello Vue in CodeSandbox!">
<random slot="random"/> // Component 2 being called inside Component 1
</HelloWorld>
</div>
</template>
<script>
import random from "./components/random";
import HelloWorld from "./components/HelloWorld";
export default {
name: "App",
components: {
HelloWorld,
random
}
};
</script>
// HelloWorld.vue (Component 1)
<template>
<div class="hello">
<h1>{{ msg }}</h1>
<slot name="random"></slot>
</div>
</template>
<script>
export default {
name: "HelloWorld",
props: {
msg: String
}
};
</script>
// random.vue (Component 2)
<template>
<div>I am random</div>
</template>