一、v-for 基本使用
<!--v-for 指令1. 用于展示列表数据2. 语法:v-for="(item, index) in xxx" :key="yyy"3. 可遍历:数组、对象、字符串(用得少)、指定次数(用得少)
-->
<div id="root"><ul><!-- 遍历数组 --><li v-for="(item, index) in persons" :key="index">{{index}} --{{item.name}} --{{item.age}} --{{item.sex}}</li></ul><ul><!-- 遍历对象 --><li v-for="(item, index) in personObject" :key="index">{{item.name}} --{{item.age}} --{{item.sex}}</li></ul><ul><!-- 遍历字符串 --><li v-for="(item, index) in str" :key="index">{{index}} -- {{item}}</li></ul><ul><!-- 遍历数字 --><li v-for="(item, index) in 5" :key="index">{{index}} -- {{item}}</li></ul>
</div>
二、v-for 中的 key 的原理
<!--面试题:react、vue 中的 key 有什么作用?( key 的内部原理)1. 虚拟 DOM 中 key 的作用:key 是虚拟 DOM 对象的标识,当数据发生变化时,Vue 会根据【新数据】生成【新的虚拟 DOM 】随后 Vue 进行【新虚拟 DOM 】与 【旧虚拟 DOM 】的差异比较,比较规则如下:2. 比较规则:(1). 旧虚拟 DOM 中找到了与新虚拟 DOM 相同的 key:①. 若虚拟 DOM 中内容没变,直接使用之前的真实 DOM②. 若虚拟 DOM 中内容变了,则生成新的真实 DOM, 随后替换掉页面中之前的真实 DOM(2). 旧虚拟 DOM 中找到与新虚拟 DOM 相同的 key:创建新的真实 DOM , 随后渲染到页面3. 用 index 作为 key 可能会引发的问题:1. 若对数据进行:逆序添加、逆序删除等破坏顺序操作:会产生没有必要的真实 DOM 更新 ==> 界面效果没问题,但效率低2. 如果结构中还包含输入类的 DOM :会产生错误 DOM 更新 ==> 界面有问题4. 开发中如何选择 key ? :1. 最好使用每条数据的唯一标识作为 key , 比如 id、手机号、身份证号、学号等唯一值2. 如果不存在对数据的逆序添加、逆序删除等破坏结构顺序操作,仅用于渲染列表用于展示使用 index 作为 key 是没有问题的-->
<div id="root"><ul><!-- 遍历数组 --><li v-for="(item, index) in persons" :key="item.id">{{item.id}} --{{item.name}} --{{item.age}} --{{item.sex}}<input type="text" name="" id=""></li></ul><p><button @click="add">按钮</button></p>
</div>