在虚拟dom中,key是唯一标识,当状态中的数据发生变化时,vue会根据新数据生成新的虚拟dom,随后新的虚拟dom与旧的虚拟dom进行差异比较(diff算法)。
新虚拟dom与旧虚拟dom是通过key进行比较的,如果虚拟dom内容没有发生变化,直接复用之前的真实dom,如果虚拟dom中的内容发生了变化,则生成新的真实dom随后替换掉页面中对应的旧的真实dom。
用index索引作为key的话,如果对数据进行逆添加、逆序删除等破坏顺序的操作,会产生没有必要的真实dom的更新,减低效率,如果还有输入类的dom时,会导致界面渲染错误。最好将每条数据的唯一标识作为key,如果不存在逆序操作,仅用于列表渲染,可以使用index作为key。