Open LeeeeeeM opened 5 years ago
1、如果是通过props传入的值,不要使用v-model,破坏了单一数据源。 这条比较常见,很多人在写input标签的时候总是喜欢用v-model,vue做了双向绑定美滋滋,其实v-model是v-bind和update:xxx的语法糖。如果外部传来的一个值用了v-model,其实是破坏了单一数据流动。不过vue会有提示。 2、如果是data内的私有属性,可以使用v-model。 因为data里面放的是组件私有的属性,所有可以放心使用v-model,数据的流动就在这个组件内部。 3、如果属性不参与渲染或者传递,则不要放到data里面,造成无谓的数据劫持。 很多人喜欢把所有在vue整个生命周期的东西都放到data里面,其实并不是这样,放在data里的属性总是要做数据劫持的,如果不参与指令绑定,那么完全可以不放到data里。完全可以直接在this上挂载。常见的如this.timer = setTimeout(() => {}),为了防止内存泄漏,在beforeDestroy里clearTimeout。这种定时器在整个过程中什么只是做了一次定时清除。如果这种情况多,可以在this上单独开个空间time = {}存储。
1、如果是通过props传入的值,不要使用v-model,破坏了单一数据源。 这条比较常见,很多人在写input标签的时候总是喜欢用v-model,vue做了双向绑定美滋滋,其实v-model是v-bind和update:xxx的语法糖。如果外部传来的一个值用了v-model,其实是破坏了单一数据流动。不过vue会有提示。 2、如果是data内的私有属性,可以使用v-model。 因为data里面放的是组件私有的属性,所有可以放心使用v-model,数据的流动就在这个组件内部。 3、如果属性不参与渲染或者传递,则不要放到data里面,造成无谓的数据劫持。 很多人喜欢把所有在vue整个生命周期的东西都放到data里面,其实并不是这样,放在data里的属性总是要做数据劫持的,如果不参与指令绑定,那么完全可以不放到data里。完全可以直接在this上挂载。常见的如this.timer = setTimeout(() => {}),为了防止内存泄漏,在beforeDestroy里clearTimeout。这种定时器在整个过程中什么只是做了一次定时清除。如果这种情况多,可以在this上单独开个空间time = {}存储。