当前位置: 首页 > 工具软件 > vue-jekyll > 使用案例 >

Vue的key

徐高懿
2023-12-01

Vue 会尽可能高效地渲染元素,通常会复用已有元素而不是从头开始渲染。这么做除了使 Vue 变得非常快之外,还有其它一些好处。例如,如果你允许用户在不同的登录方式之间切换:

 <div id="app">
        <button @click="flag=!flag">按钮</button>
        <div v-if="flag">
            手机号:<input type="text" placeholder="请输入手机号">
            <br>
            验证码:<input type="text" placeholder="请输入验证码">
        </div>
        <div v-else>
            邮箱:<input type="text" placeholder="请输入邮箱">
            <br>
            密码:<input type="text" placeholder="请输入邮箱密码">
        </div>
    </div>

那么在上面的代码中切换 文字内容将不会清除用户已经输入的内容。因为两个模板使用了相同的元素,<input> 不会被替换掉——仅仅是替换了它的 placeholder

要想<input>不复用只需要给一个biv盒子加个key值, 告诉Vue “这两个元素是完全独立的,不要复用它们。

 <div id="app">
        <button @click="flag=!flag">按钮</button>
        <div v-if="flag" key="key">
            手机号:<input type="text" placeholder="请输入手机号">
            <br>
            验证码:<input type="text" placeholder="请输入验证码">
        </div>
        <div v-else>
            邮箱:<input type="text" placeholder="请输入邮箱">
            <br>
            密码:<input type="text" placeholder="请输入邮箱密码">
        </div>
    </div>

v-for中的key

v-for指令使用key值几种情况:

     v-for指令的key值优先使用唯一字符串(性能最高), 实在没有就用下标index

        1. 没有key值(默认是下标) :   不复用,就地更新

        2. key值为下标(相当于没设置) :  不复用,就地更新

        3. key值是id   :  复用相同的key,更新不同的key

            同级父元素中,子元素的key值必须是唯一的,否则vue会报错。(类似于相同作用于变量名不能重复)

 总结 : key值优先设置id, 没有id就用下标.

key值的作用

            key值的主要作用是给元素添加一个唯一标识符,用于提高vue渲染性能。当data发生变化的时候,vue会使用diff算法来对比新旧虚拟DOM。如果key值相同,才会考虑复用元素。如果key值不同,则会强制更新元素。一般通过给元素key值设置为id,来保证vue在更新数据的时候可以最大限度复用相同key值的元素。 

key值为什么不能是下标

            因为数组的长度发生变化的时候,其他的元素下标会受到影响。而如果把下标作为key值,由于其他的元素下标变化。所以vue会认为你的key值也变化了,就会强制更新你的元素,影响性能。

API — Vue.js

 类似资料: