使用key维护列表的状态

当列表的数据变化时,默认情况下,vue尽可能的服用已存在的DOM元素,从而提升渲染的性能。但这种默认的性能优化策略,会导致由状态的列表无法被正确更新。

key的使用注意事项:

1、key的值必须是string、number

2、key的值必须具有唯一性

3、建议把数据项的id属性的值作为key的值

4、使用index的值作为key的值没有意义

5、建议使用v-for指令的时候一定要指定key的值

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>
</head>
<body>
<div id="app">
<div>
<input type="text" v-model="username">
<button @click="addUserName">添加</button>
</div>
<ul>
<li v-for="user in userlist" :key="user.id">
<input type="checkbox">
姓名:{{ user.name}}
</li>
</ul>
</div>
<script>
var vm = new Vue({
el:"#app",
data:{
userlist:[{id:1,name:'sz'},{id:2,name:'sd'},{id:3,name:'se'}],
username:'',
nextId: 4,
},
methods:{
addUserName: function (){
if(!this.username) return alert('名称不能为空')
this.userlist.push({
id: this.nextId,
name: this.username
}),
this.nextId ++
}
}
})
</script>
</body>
</html>

参考:https://www.zhihu.com/question/61064119

vue中key的更多相关文章

  1. Vue中 key keep-alive

    keep-alive key <!DOCTYPE html> <html> <head> <title></title> <scrip ...

  2. vue中 key 值的作用

    原文地址 我们知道,vue和react都实现了一套虚拟DOM,使我们可以不直接操作DOM元素,只操作数据便可以重新渲染页面.而隐藏在背后的原理便是其高效的Diff算法. vue和react的虚拟DOM ...

  3. vue中key的作用

    1.v-if中用key管理可复用的元素  Vue 会尽可能高效地渲染元素,通常会复用已有元素而不是从头开始渲染.这么做,除了使 Vue 变得非常快之外,还有一些有用的好处.例如,如果你允许用户在不同的 ...

  4. vue中key的作用 v-for里警告 v-if的复用

    vue总是会复用页面上已经存在的dom,区别的方法是加上key就可以,还设有v-for时候的警告也是如此key的作用是区别这条跟那条的.<body> <div id="ap ...

  5. 关于Vue中:key="index"的console警告

    在写vue项目时,浏览器的console出现如下警告信息: [Vue warn]: Property or method "index" is not defined on the ...

  6. 图解vue中 v-for 的 :key 的作用,虚拟dom Diff算法

    其实不只是vue,react中在执行列表渲染时也会要求给每个组件添加上key这个属性. 要解释key的作用,不得不先介绍一下虚拟DOM的Diff算法了. 我们知道,vue和react都实现了一套虚拟D ...

  7. vue中使用key管理可复用的元素

    1.概述 Vue 会尽可能高效地渲染元素,通常会复用已有元素而不是从头开始渲染. key解决上述问题之外的情景:这两个元素是完全独立的,不要复用它们. 2.示例 <!DOCTYPE html&g ...

  8. Vue中使用key的作用

    key的作用是为了在diff算法执行时更快的找到对应的节点,提高diff速度 key具有唯一性 vue中循环需加 :key=“唯一标识” ,唯一标识可以使item里面id index 等,因为vue组 ...

  9. Vue中的key到底有什么用?

    key是为Vue中的vnode标记的唯一id,通过这个key,我们的diff操作可以更准确.更快速 diff算法的过程中,先会进行新旧节点的首尾交叉对比,当无法匹配的时候会用新节点的key与旧节点进行 ...

  10. vue中:key 和react 中key={} 的作用,以及ref的特性?

    vue中:key 和react 中key={} 为了给 vue 或者react 一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一 key 属性 一句话概括就是 ...

随机推荐

  1. java list的六种赋值方式

    public static void main(String[] args) { //第一种赋值 List<String> list1 = Arrays.asList("stri ...

  2. 支持批量图片转文字的【OCR】文字识别工具,支持截图识别,速度快,准确度高,免费OCR,开源软件

    想必大家偶尔也有需要从图片中提取文字的需求,虽然现在手机上都自带了拍照识别功能,可是从电脑上的图片传到手机识别再将结果发回来实 在是有点麻烦,尤其当图片数量较多时,更是费时费力,使用网页版工具又要面临 ...

  3. Spring事务的四大特性

    1.事务(Transaction) 事务一般是指数据库事务, 是基于关系型数据库(RDBMS)的企业应用的重要组成部分.在软件开发领域,事务扮演者十分重要的角色,用来确保应用程序数据的完整性和一致性. ...

  4. Kubernetes--标签选择器(标签)

    标签选择器用于表达标签的查询条件或选择标准,Kubernetes API目前支持两个选择器:基于等值关系(equality-based)以及基于集合关系 (set-based).例如,env=prod ...

  5. VS Code编写stm32

    说明 virtual code实现编辑功能,其有强大的代码提示.代码阅读功能. 通过bat文件,通过cmd编译.下载,具体下载器设置仍需在keil软件中设置 具体代码调试仍需在keil软件下 项目配置 ...

  6. [2] Bert 论文精读

    BERT是NLP领域让预训练这件事情出圈的工作. 开篇Introduction介绍了两类主流的预训练方法: 1.feature-based,即基于特征的,即我首先通过预训练得到一些比较好的特征,然后将 ...

  7. 地址重写了,只是ip 没转发,应该是9999那个才对,rewrite /sbgl/(.*) http://127.0.0.1:9999/$1 permanent;,这样,

    记录想nginx搞路径重写的失败历程. 1.想将从nginx发出的127.0.0.1:80 请求过来的带sbgl的字眼去掉,然后,代理为127.0.0.1:9999, 所以我就百度出这个  这个  r ...

  8. C# const, readonly, static readonly

    转: Const 定义的是静态常在对象初始化的时候赋值.以后不能改变它的值.属于编译时常量.不能用new初始化. Readonly 是只读变量.属于运行时变量.可以在类constructor里改变它的 ...

  9. 询问chatGPT的一些问题

  10. ARouter转场动画无效,试试下面这种写法

    A -> B 的转场动画: A:ARouter.getInstance().build(ArouterPath.PATH_AUDIO_PLAYER) .withSerializable(&quo ...