本笔记是看b站codewhy老师的视频做的笔记,大家可以一起学习,个人觉得他讲课很好,不光可以听到新知识,还可以复习旧知识,简直美滋滋。视频地址是
组件化
什么是组件化
vue的组件化
如何使用组件化
- 创建组件构造器 :调用
Vue.extend()方法创建构造器
es6补充
引号可以换成`,这样定义的变量可以换行。
const a= `aa
bb`
全剧组件 和 局部组件
以上就是全局组件的注册 以下是局部组件的注册👇
父组件和子组件的区分
vue实例也可以当做组件,一般叫做root组件。
- 子组件在父组件注册的时候,不能在全局使用。只能在父组件中使用,想要使用必须注册。
语法糖
组件模板抽离
- 第一种写法,在上边写个script标签,类型是x-tempate,然后注册的时候关联他的id。
- 第二种写法:直接写tempalate标签,然后关联id就行了
组件访问vue实例中的数据
- 组件不能访问组件中的数据
- 要在组件注册的时候,放在data函数中,这是一个函数,和vue实例中的不同,
组件中data为什么必须是个函数?
因为函数的每次调用都会在内存中新增一个,这样这个组件每次调用的时候都是一个新的相互独立的, 例如一个计数器,你在主页调用的时候是计数到2了,如果data不是函数的话,子页面也都是2,就起不到单独计数的功能了。
父子组件之间的通讯
父组件向子组件传递 props
在注册组件的时候写一个props,然后在调用的时候写v-bind绑定一下,之后就可以取到数据了。
props 驼峰命名的坑
驼峰命名要改成-
子组件传给父组件
常用的方法是,子组件传递一个事件给父组件,这时候就需要一个自定义事件来完成,
之前学的v-on只学了监听dom事件,其实他还可以监听自定义事件,
自定义事件的流程,
- 子组件中,通过
$emit()来触发事件, - 父组件中,通过v-on来监听子组件事件。
知识回顾
父子组件数据绑定(v-model)
错误示范:当我们绑定到父组件的props时,虽然可以达到双向绑定的效果,但是会报错,因为父组件的内容应该是由后台数据决定的,现在绑定了子组件,很容易就错乱了。 正确:在父组件的components中写个data函数,返回一下this.props中的值
此时只是dmessage改了,但是父组件中的data中的message没有改变,想要改变父组件中data中的message的值👇
父子组件的访问方式
父组件访问子组件
有两种方法:$children $refs (reference引用)
$children$children这种方法要通过下标值来拿东西,如果有新插入的cpn他的下标就改变了,所以用的比较少。$refs这种方法是对象类型,默认是空对象。 用这种方法就可以知道指定的是哪个cpn,就算中途再加几个cpn也不用担心。
子访问父
$parent就是
插槽slot
组件的插槽是让我们的组件更具有扩展性
例如:第一次使用模板的时候,我想显示一个button 第二个显示 span
<slot><slot>
如何封装这些组件呢?
基本用法
1. 在模板中加上slot标签
2. `<slot><p>这是默认值</p></slot>`可以设置默认值
3. 用的时候有多个值就会都放到slot中
具名插槽
补充 编译的作用域
虽然调用的是cpn但是他是属于app里的,就相当于把<cpn></cpn>当做了#app中的一个普通的标签。所以用的isTrue是vue中的data
作用域插槽
目的:父组件替换插槽标签,内容由子组件提供 案例:模板中是abcde是li标签,想改成a-b-c-d-e的。