一般在项目src中创建一个components文件夹存放我们自定义的组件,在需要的页面直接使用
1.第一步:在页面中引入子组件,(假设在components文件下有一个myHeader.vue组件)
import myHeader from '@/components/myHeader.vue'
2.第二步:注册子组件
components:{
myHeader
}
3.第三步:作为标签使用
<myHeader />
或者
<myHeader></myHeader>
使用组件的好处
- 组件是可以
复用
性的 - 易于
维护
- 有封装性,易用于
使用
- 大型项目中降低组件之间
复用
性
全局组件
组件分为:全局组件和局部组件
全局组件
在main.js中直接使用Vue.component
import Loading from '@/components/myLoading.vue'
Vue.component('loading',Loading)
局部组件
<script>
import Loading from '@/components/myLoading.vue'
export default {
data() {
return {}
},
components:{
Loading,
}
}
</script>
组件之间的通讯方式
父传子
在父组件的子组件标签上绑定一个自定义属性,挂在要传输的变量,在子组件上通过props来接收,props可以是数组也可以是对象
子传父
在父组件的子组件上绑定一个自定义事件,接收子组件传递过来的事件,子组件通过$emit 触发父组件上的自定义事件,发送参数
兄弟之间
通过在main.js中初始化一个全局的
$bus
,在发送事件的一方通过$bus.$emit('事件名',传递的参数信息)
发送,在接收事件的一方通过bus.$on('事件名,参数')
接收传递的事件
组件样式穿透
为了让组件中的样式不影响其他组件的样式,只在当前组件起作用,我们会加上scoped
<style lang ='scss'></style>
有时候我们想让某个样式影响子组件,这时候我们可以使用操作符
css中
<style scoped>
>>> .active {}
</style>
sass中
<style lang='scss' scoped>
/deep/ .active {}
</style>