在md书写过程中,常常要通过写代码来进行记录。代码中如果每一个数据类型都在下方进行说明的话,未免太过繁琐。因此,我决定借鉴vue的插值语法的符号{{注释}}进行注释,双花括号中的内容在该位置可以是对数据类型的标注、
event深入
当触发一个事件的时候,例如点击事件,
组件间通过绑定自定义事件进行通信。
通过自定义事件,结合$emit进行子给父传递数据。事件绑定在父组件身上,$abc="method",在方法中进行方法的激活。
例如写method(data){console.log(data);return data};
子组件中:给原生dom绑定原生事件click,@click="$emit("abc","params");
如此,输出则是params,接收数据则只需要在方法前进行赋值。
v-model高级使用
v-model可以作为组件间通信方式的一种。
先讲讲v-model的基本使用,如果在input框中绑定v-model="msg",需要先创建一个响应式数据,用来接受input中的v-model绑定的值。这样只要input中输入内容发生改变,msg就会实时发生变化。
如何手写v-model。
高级使用(作为一种组件间通信方式)。
在子组件中,先接受数据,
props:["value"],要写input标签,给它绑定上v-bind:value="value",并且监听原生时间input,写成:@input=$emit('input',$event.target.value)。
第一条和第二条的子组件的使用,使用起来的效果是一模一样的。
sync修饰符实现数据同步
sync与v-model差不多。
在子组件当中,不使用sync修饰符,先】用props接受数据money,并且在子组件中给button绑定点击事件,写法如此:
@click=$emit('updata:money',{{数据,需要传给父组件的数据}})。
$attrs和$listeners
它们两者是组件实例的属性,可以获取到父组件给子组件传递的props和自定义事件,但是如果子组件的props接收,则无法在attrs中收到数据。 在子组件中,用v-on='attrs'。
$children和$parent
在vue组件中,可以通过给子组件绑定ref,写成ref="abc",如此即可通过this.$refs.{{子组件名字}}.{{子组件的数据(通常保存在data中)}}操作子组件的数据和方法
$children组件实例的属性,可以获取到当前组件的所有子组件,传出一个数组。
$parent组件实例的属性,可以获取到当前组件的父组件,进而操作父组件的数据和方法。
混入mixin
如果项目中出现很多结构相似的功能,首先想到的是组件的复用。
如果项目中出现很多js业务逻辑相似时,优先想到mixin。它可以把多个组件js重复,相似的地方提取出来。
例如一个method方法,在两个组件中是相同的。我们先创建一个js文件,将method方法整个提取出来,对外暴露一个对象,对象里面则是method方法,写法如下:method:{{{代码放这里}}}。
最后在需要使用的组件中引入,在配置项中写mixin:{{引入的重命名}}。
插槽
有三种插槽,他们都能实现父子间通信
- 默认插槽
- 具名插槽
- 作用域插槽
作用域插槽
子组件的数据来源于父组件,但是子组件无法决定它的外观与结构。
父组件如下:
子组件如下: