注意:
参数1:组件名称
参数2:组件模板对象
Vue.component('myLogin', {
template: '<div><a href="#">登录</a> | <a href="#">注册</a></div>',
data() {
return {
msg: '大家好!'
}
},
methods:{
login(){
alert('点击了登录按钮');
}
}
});
// 使用
<my-login></my-login>
定义私有组件
export default {
components: {
login: {
template: '<h1>我是个私有的login组件</h1>'
}
}
}
利用 v-if 和 v-else 切换组件
<input type="button" value="toggle" @click="flag=!flag">
<my-com1 v-if="flag"></my-com1>
<my-com2 v-else></my-com2>
data() {
return {
flag: true
}
}
使用component
标签,来引用组件,并通过:is
属性来指定要加载的组件
<div id="app">
<a href="#" @click.prevent="comName='login'">登录</a>
<a href="#" @click.prevent="comName='register'">注册</a>
<hr>
<transition mode="out-in">
<component :is="comName"></component> <===comName就是组件名
</transition>
</div>
import 子组件对象 from './components/xxx.vue';
{
components: {
组件名: 子组件对象
}
}
// 第一种用法 ===> 父组件声明子组件
// App.vue文件
<template>
<div> <sw-header></sw-header> </div>
</template>
import Header from './components/Header.vue';
export default {
components: {
'sw-header': Header,
}
}
// 第二种用法 ===> main.js中全局引用和声明子组件,其他组件可直接使用
// main.js文件
import Header from './components/Header';
Vue.component('sw-header', Header);
new Vue({
el: '#app',
render(h) {
return h(App);
},
})
// App.vue中直接使用,不用引用和在components中声明
<div>
<sw-header></sw-header>
</div>