Vue的进阶属性

103 阅读1分钟

computed -计算属性

  • 不需要加括号
  • 它会根据依赖是否变化来缓存

用途

watch -侦听

  • 一旦data数据变化,就执行的函数
  • options.watch用法
  • this.$watch用法
  • deep,immediate含义

用途

什么是变化

  • 实例
  • obj原本是{a:'a'},现在obj={a:'a'}
  • obj变了,obj.a没有变
  • 简单类型看值,复杂类型看地址
  • 这其实就是===规则

deep:true是干什么的

  • 如果object.a变了,请问object算不算也变了
  • 如果你的答案是也变了,呢么使用deep:true
  • 如果你的答案是没有变,那么就用deep:false
  • deep的意思就是,监听object的时候是否网深了看 注意:具体看文档哦。

语法1

watch:{//不要使用箭头函数
o2:function(values,oldValue){},
o3:(){},
o4:[f1,f2],
o5:'methodName',
o6:{handler:fn,deep:true,immediate:true},//handler要执行的函数,deep是否往深看,immediate是否第一次执行
'object.a':function{}

}

语法2

vm.$watch('xxx',fn,{deep:...,immediate:...})

computed和watch的区别

  1. computed就是计算属性的意思,watch就是监听的意思;
  2. computed是用来计算一个值的,不用加括号可以当属性直接用,根据依赖自动缓存
  3. watch由两个选项一个是deep一个是immediate,deep是是否往深了看,immediate是在第一次渲染时是否执行这个函数。

directives -指令

  • 内置指令 v-if/v-for/v-bind/v-on
  • 自定义指令,如v-focus
  • 指令就是减少重复的dom操作

minxin -混入

  • 重复三次之后的出路
  • 混入v.s.全局混入
  • 选项自动合并
  • 混入就是为了减少重复的构造选项

extends -继承

  • 先了解一下Vue.extend
  • 感觉mixin还是有点重复
  • 继承就是为了减少重复的构造选项

provide/inject

  • 爷爷想要和孙子讲话怎么办
  • 祖宗要和他的后代讲话怎么办,
  • 使用全局变量,但是全局变量不是很好
  • 所以使用局部全局变量