Vue学习笔记(五)——组件与实例
参考文档:https://cn.vuejs.org/v2/guide/
组件与实例定义的几个不同点:
- 组件不需要指定el,实例则需要指定el;
- 组件的data通常是一个函数,实例则通常是一个对象。
下面简单说明一下两者产生上述不同点的原因:
- 组件通常需要复用(比如在v-for中循环生成),无法指定el,而实例则是全局唯一的,因此必须指定el;
- 当组件的data是函数时,组件复用时生成的数据是每个组件各自维护一份,当组件的data是对象时,组件复用时生成的数据是所有组件公用一份,而实例没有复用的场景,是全局唯一的,因此定义为函数还是对象没有区别。
使用组件的几个注意点:
组件在声明时template只能有一个根元素(这一点和anguar的directive一样),如果尝试定义多个根元素,则会有以下错误提示:
- Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead.
-
组件不能在内部修改传入的信息(即props内的参数),如果尝试修改,则会有以下错误提示:
Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop being mutated: “xxx”
如果需要修改,可以通过$emit通知父元素修改。
组件可以指定ref属性(当前组件在父元素内的唯一标识符),此时父元素可以利用指定的ref属性通过以下方式来调用组件内的方法:
that.$refs.refValue.func();
如果不需要调用组件内的方法,则可以不指定ref属性。
还没有评论,来说两句吧...