v-for的基本使用
| v-for指令: |
| 1. 用于展示列表数据 |
| 2. 语法 :v-for="(item,index) in XXX" :key="YYY" |
| 3. 可以遍历 :数组,对象,字符串(用的少),指定次数(用的少) |
| <body> |
| <div id="root"> |
| |
| <ul> |
| <li v-for="p in persons"> |
| {{p.name}}-{{p.age}} |
| </li> |
| </ul> |
| |
| <ul> |
| |
| <li v-for="(a,b) in car"> |
| {{b}}-{{a}} |
| </li> |
| </ul> |
| |
| <ul> |
| |
| <li v-for="(a,b) in name"> |
| {{a}}-{{b}} |
| </li> |
| </ul> |
| |
| </div> |
| <script> |
| Vue.config.productionTip = false; |
| new Vue({ |
| el: "#root", |
| data: { |
| name: "妞妞", |
| persons:[ |
| {id:001,name:"张三",age:18}, |
| {id:002,name:"李四",age:19}, |
| {id:003,name:"王五",age:20} |
| ], |
| car:{ |
| name:"autoA8", |
| price:"200万", |
| address:"德国" |
| } |
| } |
| }) |
| </script> |
| </body> |
key的原理
| vue中的key的作用(key的内部原理) |
| 1. 虚拟DOM中key的作用: |
| key是虚拟DOM对象的标识,当数据发生改变时,Vue会根据【新数据】生成【新的虚拟DOM】 |
| 随后Vue进行【新虚拟DOM】与【旧虚拟DOM】的差异比较,比较规则如下 |
| 对比规则: |
| 1.旧虚拟DOM中找到了与新虚拟DOM相同的key: |
| ①。若虚拟DOM中的内容没有改变,直接使用之前的真实DOM |
| ②。若虚拟DOM中的内容变了,则生成新的真实DOM,随后替换掉页面中之前的真实DOM |
| |
| 2. 旧虚拟DOM中未找到与新虚拟DOM相同的key |
| 创建新的真实DOM,随后渲染到页面中 |
| 2. 用index作为key可能会引发的问题: |
| ①若对数据进行,逆序添加,逆序删除等破坏顺序操作: |
| 会产生没有必要的真实DOM更新==> 界面效果没有问题,但效率低 |
| ②如果结构中还包含输入类的DOM: |
| 会产生错误的DOM更新==>界面有问题 |
| 3.开发中如何选择key? |
| 1.最好使用每一条数据的标识符作为key,比如id,手机号,身份证号,学号等唯一标识 |
| 2,如果不存在对每一条数据的逆序添加,逆序删除等破坏操作,仅用于渲染列表用于展示,则使用 |
| index作为key是没有问题的 |
| <body> |
| <div id="root"> |
| |
| <ul> |
| <button @click="add">添加老刘</button> |
| |
| <li v-for="p in persons" :key="p.id"> |
| {{p.name}}-{{p.age}} |
| <input type="text"> |
| </li> |
| </ul> |
| |
| </div> |
| <script> |
| Vue.config.productionTip = false; |
| new Vue({ |
| el: "#root", |
| data: { |
| name: "妞妞", |
| persons:[ |
| {id:001,name:"张三",age:18}, |
| {id:002,name:"李四",age:19}, |
| {id:003,name:"王五",age:20} |
| ] |
| }, |
| methods:{ |
| add(){ |
| this.persons.unshift({id:004,name:"老刘",age:90}) |
| } |
| } |
| }) |
| </script> |
| </body> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构