2018-02-5-VUE2.0查漏补缺
注意事项
由于 JavaScript 的限制,Vue 不能检测以下变动的数组:
1、 当你利用索引直接设置一个项时,例如:vm.items[indexOfItem] = newValue
2、 当你修改数组的长度时,例如:vm.items.length = newLength
为了解决第一类问题,以下两种方式都可以实现和 vm.items[indexOfItem] = newValue 相同的效果,同时也将触发状态更新:
1 | |
1 | |
为了解决第二类问题,你可以使用 splice:
1 | |
对象更改检测注意事项
还是由于 JavaScript 的限制,Vue 不能检测对象属性的添加或删除:
1 | |
对于已经创建的实例,Vue 不能动态添加根级别的响应式属性。但是,可以使用 Vue.set(object, key, value) 方法向嵌套对象添加响应式属性。例如,对于:
1 | |
你可以添加一个新的 age 属性到嵌套的 userProfile 对象:
1 | |
你还可以使用 vm.$set 实例方法,它只是全局 Vue.set 的别名:
1 | |
v-for with v-if
当它们处于同一节点,v-for 的优先级比 v-if 更高,这意味着 v-if 将分别重复运行于每个 v-for 循环中。当你想为仅有的一些项渲染节点时,这种优先级的机制会十分有用,如下:
v-for 时,key
2.2.0+ 的版本里,当在组件中使用 v-for 时,key 现在是必须的。
1 | |
这个 .passive 修饰符尤其能够提升移动端的性能。
Vue 还对应 addEventListener 中的 passive 选项提供了 .passive 修饰符。
1 | |
$event
有时也需要在内联语句处理器中访问原始的 DOM 事件。可以用特殊变量 $event 把它传入方法:
1 | |
1 | |
2018-02-5-VUE2.0查漏补缺
https://zhangyingxuan.github.io/2018-02-05-VUE2.0查漏补缺/