你理解key的作⽤吗?

这是⼀道特别常⻅的问题,主要考查⼤家对虚拟DOM和patch细节的掌握程度,能够反映⾯试者理解层次。

思路分析:

  1. 给出结论,key的作⽤是⽤于优化patch性能
  2. key的必要性
  3. 实际使⽤⽅式
  4. 总结:可从源码层⾯描述⼀下vue如何判断两个节点是否相同
    回答范例:
  5. key的作⽤主要是为了更⾼效的更新虚拟DOM。
  6. vue在patch过程中判断两个节点是否是相同节点是key是⼀个必要条件,渲染⼀组列表时,key往往是唯⼀标
    识,所以如果不定义key的话,vue只能认为⽐较的两个节点是同⼀个,哪怕它们实际上不是,这导致了频繁
    更新元素,使得整个patch过程⽐较低效,影响性能。
  7. 实际使⽤中在渲染⼀组列表时key必须设置,⽽且必须是唯⼀标识,应该避免使⽤数组索引作为key,这可能
    导致⼀些隐蔽的bug;vue中在使⽤相同标签元素过渡切换时,也会使⽤key属性,其⽬的也是为了让vue可以
    区分它们,否则vue只会替换其内部属性⽽不会触发过渡效果。
  8. 从源码中可以知道,vue判断两个节点是否相同时主要判断两者的key和元素类型等,因此如果不设置key,
    它的值就是undefined,则可能永远认为这是两个相同节点,只能去做更新操作,这造成了⼤量的dom更新
    操作,明显是不可取的。
    知其所以然
    测试代码,test-v3.html

上⾯案例重现的是以下过程:

看到上面的图,大家应该知道key的作用很大啊哦。建议使用。

  • 暂无回复内容