你体会到Vue 组件化思想了吗?
组件的使用必须在 Vue 实例挂载的 div 之内
组件实例对象
组件的创建、注册可以在任意其他组件中,或者在 Vue 实例中
官方文档的注册方式
直接通过 Vue 实例注册创建的组件意味着注册方式是全局的。也就是说他们再注册之后可以用在任何新创建的 Vue 根实例的(new Vue)的模板中
如果是组件之间进行注册的话,那么最高级的组件其注册位置在 Vue 实例中,最高级不包括 Vue 实例,其实 Vue 实例是根组件
组件在哪里注册,就在哪里使用 ;在 Vue 实例中注册可以在全局中使用 、在其他组件中注册只能在其 他组件内使用
疑问在于,这样注册的组件算是全局组件还是局部组件呢?是算局部组件的,因为在组件内进行注册的,但是可以直接使用该组件
1.把模版写在 <script type = 'text/x-template'></script> 中,通过添加 id 属性和组件相关联
在组件的template属性中添加模板的id即可
2.使用 template 标签 ,同样的通过添加 id 属性 和组件相关联
template 标签必须放在挂载区内
组件中的data属性为什么是一个函数
这种情况就是多个组件的值会同时被修改
子组件是不能引用父组件或者 Vue 实例的数据的,但是在开发中,一些数据确实需要从上层传递到下层,比如在一个页面中从服务器中请求到很多数据,其中一部分数据并非由整个页面的大组件展示的,而是需要下面的小组件进行展示,这时我们不会让小组件再次发送网络请求,而是直接让大组件将数据传递给小组件
使用选项 props 来声明需要从父级接受到的数据
方法一:字符串数组,数组中的字符串就是传递时的名称
方法二:对象、对象可以设置传递时的类型,也可以设置默认值等
使用组件时,接受父组件的值通常会有 利用驼峰标识定义的属性,这时我们需要利用 c- / 或者用 - 来连接词语
暂时标签内传值时不支持驼峰命名
当模板中的标签过多时,需要使用一个总标签将其括起来,否则会报错
当子组件需要向父组件传递数据时就需要用到自定义事件
流程 :在子组件中,通过$emit()来触发事件;在父组件中,通过v-on 来监听子组件事件(v-on不仅可以监听DOM事件,也可以监听自定义事件)
错误思维
正确思维