我目前有一个 Vue 组件,用于我的应用程序的一部分。我想在我的应用程序的另一部分使用这个相同的组件;但是,我想对 CSS 进行一些小的更改(更改背景颜色等)。
简单但重复的方法是简单地将组件复制并粘贴到新的 .vue 文件中,并进行相应的 CSS 更改;但是,有没有更好的方法来实现这种效果?
理想情况下,我希望能够创建一个新的 Vue 组件,该组件导入整个模板以及方法、道具等。我已经研究过使用extends;但是,它不会导入 Vue 模板 - 只是功能。
您可以将 css 类名作为 props 传递:
Vue.component('my-component', {
template: '#my-component',
props: ['styled']
})
new Vue({
el: '#app',
})Run Code Online (Sandbox Code Playgroud)
body {
font-family: "Montserrat"
}
.card {
border-radius: 8px;
margin: 20px;
padding: 30px 40px;
}
.first-component {
background-color: #FFBF88;
font-size: 16px;
font-weight: bold;
}
.second-component {
background-color: #C4E0F1;
font-size: 12px;
text-align: right;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.4.2/vue.min.js"></script>
<div id="app">
<my-component styled="first-component"></my-component>
<my-component styled="second-component"></my-component>
</div>
<template id="my-component">
<div class="card" :class="styled">
I'm the same component
</div>
</template>Run Code Online (Sandbox Code Playgroud)