1、侦听器-watch
1.1、基础侦听
watch和data同级,可以侦听data/computed属性值的改变。
语法:
newVal:更新后的值,oldVal:旧值。
1.2、深度侦听
基础侦听不能侦察到复杂数据类型的数据变化,需要做额外的配置,额外配置如下:
深度侦听可以侦听复杂类型, 或者立即执行侦听函数
语法:
immediate:设置页面一进来时马上触发;
deep:设置是否深度侦听;
handler(固定写法):为回调函数,当侦测到更新就执行;
newVal:更新后的值,oldVal:旧值。
注意: 浏览器打印对象时的注意事项,当我们对对象属性进行更新,然后我们打印旧对象和新对象,点击查看的时候,会发现旧对象值和新对象一样,这是因为浏览器对性能的优化,旧对象值当我们去点开的时候,才从内存中去读取数据,不过此时才获取的数据已经被更新了,所以看不到修改前的对象数据。
2、组件
作用:
创建组件, 封装要复用的标签, 样式, JS代码。
2.1全局注册组件
全局注册 – main.js中 – 语法如图
2.2、局部注册
局部注册 – 某.vue文件内 – 语法如图
2.3、组件使用
3、scoped
只要我们给单个vue文件的样式上设置了scoped属性,那么这个样式的作用域就为当前vue文件本身;
如果没有设置scoped属性,那么其它vue组件里也可以使用这个样式。
4、组件通信
4.1父传子-props---单向数据流
介绍
即在父组件里创建数据,传给子组件使用。
前提
首先明确父和子是谁, 在父引入子 (被引入的是子) ;
如:父: App.vue ;
子: MyProduct.vue 。
父传子实现步骤:
1、在父组件里创建数据,再给子组件标签设置自定义属性,并且属性值写上我们所需要传的数据;
2、在子组件里创建和data同级的props属性,再把父组件设置的属性名用引号引住,再以数组元素的形式存在props属性里,---也就是说props属性值为数组形式,每个数组元素又为字符串形式;
3、直接在子组件标签上引入需要的数组元素即可,引入的时候不用加引号。
注意:
子组件里不能修改父组件传过去的值,只能用事件反过来告诉父组件,我需要修改数据,然后父元素进行修改。
4.2子传父-$emit
子传父实现步骤:
1、子组件内,自定义一个事件,并将数据通过该事件传递出去,
自定义事件设置:this.$emit("自定义事件名",要修改数据的标志,修改的数据);--第二个参数之后包括第二个参数,可写可不写。
2、父组件内,在子组件标签上设置自定义事件监听和事件处理函数 ---子组件必须有这个自定义事件。
语法: @自定义事件名="父methods里函数名"
3、再在父组件里声明事件处理函数,通过步骤1传入的数据,完成修改。
注意: 步骤三fn函数的第一个形参从自定义事件传入的第二个参数算起。