简单理解vue中track-by属性


Posted in Javascript onOctober 26, 2016

本文实例为大家解析了vue中track-by的属性,供大家参考,具体内容如下

api:http://cn.vuejs.org/guide/list.html#track-by

示例地址:https://jsfiddle.net/stardew/f1eju0ku/5/

无track-by情况:数据修改时,无论值是否被修改,dom都被重新渲染(控制台可以看到)

加入track-by属性:数据修改时,不变数据所在的dom不被重新渲染,已改变的数据所在dom才被重新渲染

track-by的两种使用方法:

1. 使用数据中某唯一字段,例如_uid

<div id="example">
 <p v-for="item in items" track-by="_uid">
 {{item.message}}
 </p>
 <input type="button" value="修改" @click="modify"/>
 <input type="button" value="还原" @click="reduct"/>
</div>
// 初始数据
items: [
 { _uid: '111111', message: '111' },
 { _uid: '222222', message: '222' },
 { _uid: '333333', message: '333' },
 { _uid: '444444', message: '444' },
 { _uid: '555555', message: '555' }
]
// 修改成
modify: function () {
 this.items = [
 { _uid: '111111', message: '111' },
 { _uid: '666666', message: '222' },
 { _uid: '333333', message: '3333' },
 { _uid: '888888', message: '4444' },
 { _uid: '999999', message: '5555' }
 ]
}

渲染效果如下图右(左边无track-by,右边有track-by),_uid和message都不变的情况下,才不被重新渲染,只有第一组符合条件。

简单理解vue中track-by属性

2. 使用$index,其它条件同上

<div id="example">
 <p v-for="item in items" track-by="$index">
 {{item.message}}
 </p>
 <input type="button" value="修改" @click="modify"/>
 <input type="button" value="还原" @click="reduct"/>
</div>

渲染效果如下图右,message的值第一、二条都没改变,所以一、二都没有重新渲染。

简单理解vue中track-by属性

模板中同时使用message和_uid时,只有两者都不变的情况下才不重新渲染,如下:

<div id="example">
 <p v-for="item in items" track-by="$index">
 {{item.message}} {{item._uid}}
 </p>
 <input type="button" value="修改" @click="modify"/>
 <input type="button" value="还原" @click="reduct"/>
</div>

简单理解vue中track-by属性

本文已被整理到了《Vue.js前端组件学习教程》,欢迎大家学习阅读。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 对象的解释
Nov 24 Javascript
JavaScript-RegExp对象只能使用一次问题解决方法
Jun 23 Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
Dec 29 Javascript
JavaScript中的replace()方法使用详解
Jun 06 Javascript
七夕情人节丘比特射箭小游戏
Aug 20 Javascript
实践中学习AngularJS表单
Mar 21 Javascript
Angular JS 生成动态二维码的方法
Feb 23 Javascript
js获取文件里面的所有文件名(实例)
Oct 17 Javascript
基于Vue实现微信小程序的图文编辑器
Jul 25 Javascript
layui实现点击按钮给table添加一行
Aug 10 Javascript
Vue指令之 v-cloak、v-text、v-html实例详解
Aug 08 Javascript
layui监听下拉选框选中值变化的方法(包含监听普通下拉选框)
Sep 24 Javascript
javascript iframe跨域详解
Oct 26 #Javascript
JS日期对象简单操作(获取当前年份、星期、时间)
Oct 26 #Javascript
jQuery的ready方法实现原理分析
Oct 26 #Javascript
JavaScript中省略元素对数组长度的影响
Oct 26 #Javascript
BootStrap tab选项卡使用小结
Aug 09 #Javascript
Bootstrap按钮功能之查询按钮和重置按钮
Oct 26 #Javascript
AngularJS中如何使用echart插件示例详解
Oct 26 #Javascript
You might like
再说下636单管机
2021/03/02 无线电
PHP得到mssql的存储过程的输出参数功能实现
2012/11/23 PHP
php的mssql数据库连接类实例
2014/11/28 PHP
PHP实现扎金花游戏之大小比赛的方法
2015/03/10 PHP
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
laravel 使用事件系统统计浏览量的实现
2019/10/16 PHP
有关DOM元素与事件的3个谜题
2010/11/11 Javascript
父节点获取子节点的字符串示例代码
2014/02/26 Javascript
javascript闭包的理解
2015/04/01 Javascript
jQuery插件pagination实现分页特效
2015/04/12 Javascript
谈一谈javascript中继承的多种方式
2016/02/19 Javascript
图文详解JavaScript的原型对象及原型链
2016/08/02 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
2016/09/24 Javascript
jQuery右下角悬浮广告实例
2016/10/17 Javascript
解决JavaScript layui 下拉框不显示的问题
2018/08/14 Javascript
对angular4子路由&amp;辅助路由详解
2018/10/09 Javascript
Vue.Draggable拖拽功能的配置使用方法
2020/07/29 Javascript
[44:58]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第二场
2018/04/06 DOTA
python 正则表达式 概述及常用字符
2009/05/04 Python
Python深入06——python的内存管理详解
2016/12/07 Python
分享Pycharm中一些不为人知的技巧
2018/04/03 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
2018/06/13 Python
python selenium firefox使用详解
2019/02/26 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
在TensorFlow中实现矩阵维度扩展
2020/05/22 Python
心理健康课教学反思
2014/02/13 职场文书
工程质量月活动方案
2014/02/19 职场文书
科长竞聘演讲稿
2014/05/16 职场文书
生产操作工岗位职责
2014/09/16 职场文书
对党的十八届四中全会的期盼
2014/10/17 职场文书
医院保洁员岗位职责
2015/02/13 职场文书
村官个人总结范文
2015/03/03 职场文书
2015迎新晚会开场白
2015/05/29 职场文书
pycharm 如何查看某一函数源码的快捷键
2021/05/12 Python
浅谈redis整数集为什么不能降级
2021/07/25 Redis
Win11 Build 21996.1 Dev版怎么样? win11系统截图欣赏
2021/11/21 数码科技