vue中key的作用及原理
- 作用:key能提升列表渲染速度,而且能在列表增、删、改的时候准确的保持无需变动项的组件或dom状态。
- 原理:vue在更新列表时,会复用旧列表中的VNode,由于vue会遍历旧列表的项,当没有key的时候,vue又会遍历新列表的项,导致性能变差,而且因为vue会采用就地复用策略(既相同下标的相同组件复用相同的el),导致临时dom状态错乱(input的输入值);当有key的时候,vue会先遍历新列表,缓存新列表的key,这样通过map的方式提升性能。
$createElement
该函数不会触发响应式依赖收集,解决办法:
this.$createElement(Vue.extend({
render(h) { return <span></span> }
}))
原理:$createElement并不是一个副作用函数,所以执行的时候无法添加到响应式字段的副作用数组中;组件的render方法是有副作用的,执行的时候能够触发响应式字段的副作用函数收集