运用vue.js开辟时的一些坑

关于相应式

vue的双向绑定是基于相应式来做的,即给一个Vue对象的属性加上getter, setter要领,在这些要领中处置惩罚双向绑定。但这类体式格局就会涌现下面这些坑

vue的组件化写法至心不好用

举个例子,我写了个svg-icon的基本组件,相似以下:

<template>
  <svg viewBox="0 0 24 24"
       preserveAspectRatio="xMidYMid meet"
       fit
       :style="style">
    <g><path :d="path"/></g>
  </svg>
</template>

<script type="text/babel">
  import propsMixin from './props-mixin'
  export default {
    mixins: [propsMixin],
    props: {
      path: {
        type: String,
        default: ''
      }
    },
    computed: {
      style() {
        return {
          fill: 'currentcolor',
          verticalAlign: 'middle',
          width: this.size,
          height: this.size
        }
      }
    }
  }
</script>

然后我每一个icon都只须要传入差别的途径就能够了,

<template>
  <svg-icon path="M15.41 7.41l-1.41-1.41-6 6 6 6 1.41-1.41-4.58-4.59z" :size="size"></svg-icon>
</template>

<script>
  import svgIcon from './svg-icon.vue'
  import propsMixin from './props-mixin'
  export default {
    mixins: [propsMixin],
    components: {
      svgIcon
    }
  }
</script>

但是这里就有个问题了,这里有个size属性决议icon的大小,假如我用这类体式格局来写,那末我每一个icon内里都须要声明size这个props,并且在模板上声明,我嘞个去。。。

对象相应式

Vue中的属性假如是Object,或者是数组,数组中有Object,那末这些Object最幸亏最最先就把一切须要用到的属性都定义一遍,假如在运转中从新增加属性,这个属性并非相应式的,就不会完成双向绑定,比方:

const vm = new Vue({
    data: {
        a: {
            text: 'aaa'
        }
    }
})
vm.a.b = 'ccc'

如许的状况,a的b属性不是相应式的,所以不会双向绑定

Date对象

对Date对象的操纵不是相应式的

    原文作者:Jokcy
    原文地址: https://segmentfault.com/a/1190000005009762
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞