组建的定义
组件相当于一个类,每个<组件名 />就是它的实例,上树就相当于一个实例化的过程。
组件的作用
避免单个组件过于冗长,简化项目的管理维护工作。
创建组件
Vue组件命名必须以大写字母开头。
App.vue组件是所有自定义组件的父组件。
在app文件夹下新建components文件夹后就可以在里面创建自定义组件,如图Draft1, Draft2, Draft3都是自定义组件,是App.vue的子组件。

引入组件
在行为层中用import语句引入。
自定义组件是默认暴露的所以不需要写在大括号里。
自定义组件中也可以引入其它自定义组件,就像俄罗斯套娃一样,每个项目都可以编排成一条逻辑清晰的组件链,使项目更容易被维护和管理。

定义(或称注册)组件
创建好的自定义组件必须要在components中进行定义(或称注册),React中则不存在这样的机制。

组件上树
引入的自定义组件还需要上树。自定义组件以单标签的形式上树,也可以写成双标签但没有意义,写在这样的双标签中的内容不会有任何作用。
同一个自定义组件可以重复多次上树,并且它们之间没有联系互不干扰,原因是与面向对象的原理同理,在面向对象中每个new出来的实例都是一个全新的独立的个体,Vue与组件相关的底层机制也是这样。


props - 自定义组件的自定义属性
父组件与子组件之间通过属性进行从父到子的沟通。
任何自定义组件都可以在其于父组件上树时添加自定义的HTML属性来给该子组件传达信息,这就是props。子组件通过export default{ }中的props属性来接收这些信息,props属性的属性值是一个数组。
【注意】这里的属性名不能与data函数中的属性名重复,否则程序报错。




如果添加的自定义属性为父组件data中定义的属性,则父组件的该data属性变化,子组件的视图也能随之更新。





props只读
如果自定义属性添加的是父组件data中定义的属性,子组件只能读取这个属性而不能操作这个属性。也就是说,props是只读的,但是,引用数据类型除外。


当父组件传入的数据为基本数据类型(数字、字符串、布尔型、null),这些数据对子组件来说是只读的;当父组件传入的数据为引用数据类型(数组、对象),则子组件可以操作这些数据。React中则不可能出现像这样的json上屏。



