Vue的使用技巧-创新互联

一、监听对象

清河ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!

watch的deep设为了true,这样的话,如果修改了这个queryData中的任何一个属性,都会执行handler这个方法。不过其实这样开销是蛮大的,尤其是对象里面结构嵌套过深的时候。而且有时候我们就想关心这个对象中的某个属性,比如name,这个时候可以这样

对象具体属性的watch可以直接用引号把属性括起来,就可以实现对象中特定属性的监听事件

watch: {
   'queryData.name': {
     handler: function() {
      //do something
     },
   }
}
或
watch: {
  'queryData.name'(newValue, oldValue) {
    console.log(newValue)
    }
}

二、知道何时使用v-if(以及何时避免使用)

v-if被打开或关闭时,它将创建并完全销毁该元素。相反,v-show将创建该元素并将其留在那里,通过设置其样式为display: none来隐藏它。(补充:v-show是不支持写在template模板上的)

如果你要切换的组件的渲染成本很高,那么这样做会更有效率。

反过来说,如果不需要立即执行昂贵的组件件,可以使用v-if,这样它就会跳过渲染它,而使页面的加载速度更快一些。

三、减少没必要的响应式数据,提高性能

如果一份数据没必要响应式,可以定义在data函数return的对象之外,这样vue就不会给这份数据处理成响应式数据,从而使页面初始化更快。有个缺点就是用watch是监听不到没有响应式数据的变化的。

data() {
    //写在return之外
    this.a = false
    const arr = []
    return {
      b: false,
      
    }
  },
  watch: {
    a(newVal) {
      console.log(newVal)
    },
    b(newVal) {
      console.log(newVal)
    }
  },
methods: {
    clickA() {
      this.a = !this.a
      console.log(this.a)
    },
    clickB() {
      this.b = !this.b
      console.log(this.b)
    },
}
data() {
    this.a = false
    const arr = []
    return {
      b: false,
      
    }
  },
  watch: {
    a(newVal) {
      console.log(newVal)
    },
    b(newVal) {
      console.log(newVal)
    }
  },
methods: {
    clickA() {
      this.a = !this.a
      console.log(this.a)
    },
    clickB() {
      this.b = !this.b
      console.log(this.b)
    },
}

四、给标签批量绑定属性

//等同于


obj = {
     nane:'pj',
     age: '18',
     height: '180'
}

五、给div绑定多个事件

六、v-for循环也可以遍历对象

obj = {
    item: 1,
    item: 2,
    item: 3,
}

七、暴露子组件的方法

methods: {
//这样可以简化写法, 避免 this.$refs.component1.$refs.childRef.Fn()
    childFn(){
        this.$refs.childRef.Fn()
    }
}

八、$attrs 将爷爷组件的数据传给孙子组件。$listeners 可以获取到上级组件的监听事件

详情学习地址:vue $attrs和$listeners的使用 - 掘金

九、this.$options

 1.过滤器不能通过this来复用?不存在的

{{ text | capitalize }}

export default {
    data() {
        return {
            text: 'hello'
        }  
    },
    filters: {
        capitalize: function (value) {
            if (!value) return ''
            value = value.toString()
            return value.charAt(0).toUpperCase() + value.slice(1)
         }
    },
    methods: {
        getDetail() {
            //这样就不需要写两份filter的逻辑了,this.$options.filters还可以沿着原型链找到全局                                            的filter
            let capitalize = this.$options.filters.capitalize
            this.title = capitalize(res.data.title)
        }
    }
}

2.校验某个Boolean类型的props有没有传

this.$options.propsData.hasOwnProperty('disabled') ? this.disabled : this.elForm.disabled

十、取消watch的监听

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前题目:Vue的使用技巧-创新互联
URL地址:http://ybzwz.com/article/cchiei.html