首页 > 其他分享 >Vue之key的原理

Vue之key的原理

时间:2022-12-23 23:11:35浏览次数:39  
标签:Vue name DOM age 虚拟 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是没有问题的。

 

 

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <title>key的原理</title>
        <script type="text/javascript" src="../js/vue.js"></script>
    </head>
    <body> 
        <!-- 准备好一个容器-->
        <div id="root">
            <!-- 遍历数组 -->
            <h2>人员列表(遍历数组)</h2>
            <button @click.once="add">添加一个老刘</button>
            <ul> 
                <li v-for="(p,index) of persons" :key="index">
                    {{p.name}}-{{p.age}}
                    <input type="text">
                </li> 
                <!--key值最好还是不要用下标index的值,可以使用一些唯一值-->
                <li v-for="(p,index) of persons" :key="p.id">
                    {{p.name}}-{{p.age}}
                    <input type="text">
                </li>
            </ul>
        </div>

        <script type="text/javascript">
            Vue.config.productionTip = false
            
            new Vue({
                el:'#root',
                data:{
                    persons:[
                        {id:'001',name:'张三',age:18},
                        {id:'002',name:'李四',age:19},
                        {id:'003',name:'王五',age:20}
                    ]
                },
                methods: {
                    add(){
                        const p = {id:'004',name:'老刘',age:40}
                        this.persons.unshift(p)
                    }
                },
            })
        </script>
</html>

 

  

标签:Vue,name,DOM,age,虚拟,key,原理
From: https://www.cnblogs.com/anjingdian/p/17001810.html

相关文章

  • MongoDB 索引原理与索引优化
    转载请注明出处:1.MongoDB索引索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。这种......
  • Vue修饰符
    修饰符在程序世界里,修饰符是用于限定类型以及类型成员的声明的一种符号,在Vue中,修饰符处理了许多DOM事件的细节,让我们不再需要花大量的时间去处理这些烦恼的事情,而能有更多......
  • Vue开发环境中配置devServer
    简述在使用Axios时,在本地开发通常会出现跨域问题,解决方法也很简单。在开发环境下,可以通过配置Vue.config.js中的module.exports中devServer来解决。注:生产环境无效,没见d......
  • Vue 列表渲染之v-for指令
    v-for指令             1.用于展示列表数据            2.语法:v-for="(item,index)inxxx":key="yyy" index是......
  • Vue
            条件渲染              1.v-if                    写法:    ......
  • 安装node.js与webpack创建vue2项目
    本文为博主原创,转载请注明出处:1.安装node.js下载地址:http://nodejs.cn/download/(可查看历史版本)node.js中文网:http://nodejs.cn/api-v16/建议下......
  • VUE 前端文本输出为超文本
    VUE的前端文本输出为超文本。但是我们希望的是页面能够自动将超文本进行转换。 ​​​​ 问题和解决{{blogContent.blogContent}}这种输出方式,VUE模板是不会将内容以HT......
  • VUE 前端文本输出为超文本
    VUE的前端文本输出为超文本。但是我们希望的是页面能够自动将超文本进行转换。  问题和解决{{blogContent.blogContent}}这种输出方式,VUE模板是不会将内容以H......
  • Vue 中$nextTick
    语法//回调函数中this为当前组件VueComponentthis.$nextTick(回调函数)作用在下一次DOM更新结束后执行其指定的回调。这样说其实有点难以理解,DOM更新结束后是......
  • vue3的setup函数的使用
     setup的使用:1.setup函数时,它将接受两个参数:(props、context(包含attrs、slots、emit))context包含三个参数,可通过解构方式写context该上下文对象是非响应式的,可以安......