vue 组件
-
组件在被封装好之后,彼此之间是相互独立的,不存在父子关系
-
在使用组件的时候,根据彼此的嵌套关系,形成了父子关系、兄弟关系
使用组件的三个步骤
在App.vue中使用组件三个步骤
<template>
<div class="app-container">
<h1>App 根组件</h1>
<hr />
<div class="box">
<!-- 渲染 Left 组件和 Right 组件 -->
<!-- 3.以标签形式使用注册好的组件 -->
<Left></Left>
<Right></Right>
</div>
</div>
</template>
<script>
// 1.导入需要使用的vue组件
import Left from '@/components/Left.vue'
import Right from '@/components/Right.vue'
export default {
// 2.注册组件
components:{
Left,
Right
}
}
</script>
<style lang="less">
.app-container {
padding: 1px 20px 20px;
background-color: #efefef;
}
.box {
display: flex;
}
</style>
通过 components 注册的是私有子组件
例如:
-
在组件 A 的 components 节点下,注册了组件 F。
-
则组件 F 只能用在组件 A 中;不能被用在组件 C 中。
注册全局组件
在 vue 项目的 main.js 入口文件中,通过 Vue.component() 方法,可以注册全局组件。示例代码如下:
// 导入 vue 这个包,得到 Vue 构造函数
import Vue from 'vue'
// 导入 App.vue 根组件,将来要把 App.vue 中的模板结构,渲染到 HTML 页面中
import App from './App.vue'
// 导入需要被全局注册的组件
import Count from '@/components/Count.vue'
Vue.component('MyCount',Count)
Vue.config.productionTip = false
// 创建 Vue 的实例对象
new Vue({
// 把 render 函数指定的组件,渲染到 HTMl 页面中
render: h => h(App),
}).$mount('#app')
组件的 props
props 是组件的自定义属性,在封装通用组件的时候,合理地使用 props 可以极大的提高组件的复用性! 它的语法格式如下:
props 是只读的
-
vue 规定:组件中封装的自定义属性是只读的,不能直接修改 props 的值。否则会直接报错:
-
要想修改 props 的值,可以把 props 的值转存到 data 中,因为 data 中的数据都是可读可写的!
props 的 default 默认值
在声明自定义属性时,可以通过 default 来定义属性的默认值。示例代码如下:
props 的 type 值类型
在声明自定义属性时,可以通过 type 来定义属性的值类型。示例代码如下:
props 的 required 必填项
在声明自定义属性时,可以通过 required 选项,将属性设置为必填项,强制用户必须传递属性的值。示例代 码如下: