VUE学习笔记

计算属性

计算属性只有在它的相关依赖发生改变时才会重新求值,计算属性是基于它们的依赖进行缓存的

//对比计算属性和watch
computed: {
  a:function () {
    //计算属性的getter和setter
    get:function(){
      return b + c; //当b或者c改变的时候,就会重新计算a的值  
    },
    set:function(){
      return b + c; //当a的值被改变的时候,会执行里面的函数
    }  
  }
},
watch:{
  a:function(){
    // 当a改变的时候就执行相应的方法
  }
}

数组和对象更新

数组更新:push(),shift(),splice(),sort(),reverse()数组执行这些方法后可以重新渲染页面数据。

注意:利用索引设置数组,无法重新渲染双向绑定的页面数据。可以使用Vue.set(arr/obj,index/key,newValue)来设置数组或者对象的更新

组件

Vue.component('example', {
  props: { // 或者props[a,b,c]
    // 多种类型
    propB: [String, Number],
    // 必传且是字符串
    propC: {
      type: String,
      required: true,
      default: 100
    },
  }
})

父子组件通信父亲在调用子组件的时候绑定自定义事件[childMethod][]对应父亲的[parentMethod][]事件,然后子组件自己内部在执行相应方法的时候,通过[this.$emit][]来触发[childMethod][],来执行父组件的[parentMethod][]方法。

//一般定义组件用.vue文件






//定义一个template也可以用以下方式
var temp = {
  template:'
' }

slot

动态组件

//如果把切换出去的组件保留在内存中,可以保留它的状态或避免重新渲染,可以在外层包裹一个keep-alive

  
    
  

var vm = new Vue({
  el: '#example',
  data: {
    currentView: 'home'
  },
  components: {
    home: { /* ... */ },
    posts: { /* ... */ }
  }
})
子组件索引

//可以通过vm.$refs.chil来获取组件对象

异步更新队列

Vue.nextTick(callback) 。回调函数在 DOM 更新完成后就会调用

过度效果

只有v-if、v-show、动态组件可以让元素的过度有过度效果。


    

hello

//动画结束状态
.name-enter-active, .name-leave-active {
  transition: opacity .5s
}
//初始状态
.name-enter, .name-leave {
  opacity: 0
}

自定义指令

//全局自定义一个自动获取焦点的指令
Vue.directive('focus',{
  //当绑定元素插入到DOM中
  inserted:function(el){
    el.focus();
    //dosomething;
  },
  //指令第一次绑定时调用
  bind:function(){},
})
//局部注册
new Vue({
  directive:{
    //改变颜色
    colorSwitch:{
      inserted:function(el,binding){
        el.style.backgroundColor = binding.value;
      }
    }
  }
})

其中钩子函数中的参数

  • el:指令所绑定的元素,可以用来直接操作dom
  • binding:指令对象{name:指令名,value:指令的绑定值}

mixin

概念:[mixin][]类似于给一个[对象A][]定义一些通用的方法或者是钩子函数的操作内容,然后把这个对象通过[mixin][]混合进入一个[vue对象][]的实例,使该[vue对象][]拥有[对象A][]的所有方法。

合并:当[对象A][]和[vue对象][]有[同名方法][]或者是[同名钩子函数][]时,方法将会被合并,先执行[对象A][]的内容。

//定义一个局部mixin
var A = {
  created:function(){},
  methods:{
    hello:function(){}
  }
}
new Vue({
  mixins:[A]
})
//或者是直接定义一个全局mixin
Vue.mixin({
  created:function(){}
})

插件

vue的插件应该有一个公开的方法[install][],这个方法的第一个参数是[全局Vue][],第二个参数是[参数options][]对象。

//定义插件
const loading = {
  install:function(Vue,options){
    //可以通过全局mixin添加一些组件,或者是添加一些全局方法
  }
}
//使用插件
Vue.use(loading);

render

new Vue({
  // h其实是createElement
  render:(h) => h(App)
})

你可能感兴趣的:(VUE学习笔记)