Vue计算属性、监听属性与生命周期

192 阅读1分钟

使用Vue的计算属性Computed

在conputed中写入写入一个方法即可

计算属性具有缓存的功能,当data里面的数据值被改变的时候 计算属性缓存的内容才会被刷新

new Vue({
    //挂载点
    el:'',
    //数据
    data:{},
    computed:{}
})
复制代码

监听属性watch

只要data中的值被改变了就会触发

Watch可以有两个传参,第一个形参是被改变后的参数,第二个是原来的参数

    new Vue({
        //挂载点
        el:'',
        //数据
        data:{},
       watch:{
          price(newM,oldM){
            Console.log(‘原参数’+oldM+’----’+’新参数’+newM)
                }
            }
      })

复制代码

深度监听

基本数据类型可以使用简写的方式 但是引用数据类型不能使用简写的方式

引用数据类型应该用深度监听,加上deep:true

handler方法名是固定的不可以被修改

immediate:true 会立即执行监听器理的handler方法

如果监听的是计算属性 里面的data属性的值发生改变才会触发监听器

            watch:{
                obj:{
                    deep:true,
                    handler(newV,oldV){
                       console.log(newV);
                        console.log('值被改了');
                    },
                    immediate:true
                }
            },
复制代码

简单粗暴的方式为,加上一个引号:

'obj.value':function(){

                    console.log(11);

                }
复制代码

如果监听的是计算属性 里面的data属性的值发生改变才会触发监听器

Vue的八大生命周期钩子函数

区别之一:执行顺序的问题beforeCreate>created>beforeMount>mounted

    new Vue({
            el:'#app'
            //Vue实例化对象创建之前
            beforeCreate() {
                console.log('beforCreate');
           },
            //Vue实例化对象创建之后
            created() {
                console.log('created');
            },
            //Vue的dom挂载之前
            beforeMount() {
                console.log('beforeMount')
            },
            //Vue的dom挂载之后
            mounted() {
                console.log('mounted');
            },
            //Vue的data值更新前
           beforeUpdate() {
               console.log('beforeUpdate');
            },
            //Vue的data值更新之后
            updated() {
                console.log('updated')
            },
            //Vue组件的销毁前
            beforeDestroy() {
                console.log('beforeDestoyr')
            },
            //Vue组件的销毁后
            destroyed() {
                console.log('destroyed');
            },
        })