简单理解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 相关文章推荐
验证用户是否修改过页面的数据的实现方法
Sep 26 Javascript
一个js控制的导航菜单实例代码
Dec 03 Javascript
chrome下jq width()方法取值为0的解决方法
May 26 Javascript
多种jQuery绑定事件的实现方式
Jun 13 Javascript
jQuery如何跳转到另一个网页 就这么简单
Dec 28 Javascript
Bootstrap Scrollspy源码学习
Mar 02 Javascript
Node.js通过身份证号验证年龄、出生日期与性别方法示例
Mar 09 Javascript
JavaScript轮播停留效果的实现思路
May 24 Javascript
微信小程序module.exports模块化操作实例浅析
Dec 20 Javascript
小程序调用微信支付的方法
Sep 26 Javascript
vue-dplayer 视频播放器实例代码
Nov 08 Javascript
解决vue安装less报错Failed to compile with 1 errors的问题
Oct 22 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
基于mysql的论坛(1)
2006/10/09 PHP
PHP 文件类型判断代码
2009/03/13 PHP
PHP+mysql防止SQL注入的方法小结
2019/04/27 PHP
原生js实现fadein 和 fadeout淡入淡出效果
2014/06/05 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
2014/09/03 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
2015/05/04 Javascript
前端弹出对话框 js实现ajax交互
2016/09/09 Javascript
微信小程序 保留小数(toFixed)详细介绍
2016/11/16 Javascript
微信小程序对接七牛云存储的方法
2017/07/30 Javascript
jquery实现动态添加附件功能
2018/10/23 jQuery
详解Node.js 中使用 ECDSA 签名遇到的坑
2018/11/26 Javascript
微信公众平台 发送模板消息(Java接口开发)
2019/04/17 Javascript
一些可能会用到的Node.js面试题
2019/06/15 Javascript
JavaScript常用工具函数大全
2020/05/06 Javascript
js实现随机圆与矩形功能
2020/10/29 Javascript
[01:20]DOTA2 齐天大圣至宝动态展示
2016/12/13 DOTA
[01:20]PWL S2开团时刻第三期——团战可以输 蝙蝠必须死
2020/11/26 DOTA
[01:01]2020完美高校联赛(秋)西安落幕
2021/03/11 DOTA
python实现的文件夹清理程序分享
2014/11/22 Python
Python使用logging结合decorator模式实现优化日志输出的方法
2016/04/16 Python
对numpy中向量式三目运算符详解
2018/10/31 Python
对Python中创建进程的两种方式以及进程池详解
2019/01/14 Python
Python lxml模块的基本使用方法分析
2019/12/21 Python
完美解决keras保存好的model不能成功加载问题
2020/06/11 Python
python em算法的实现
2020/10/03 Python
值得收藏的HTML5资源(学习html5的朋友可以收藏下)
2010/07/20 HTML / CSS
北美三大旅游网站之一:Travelocity
2017/08/12 全球购物
长曲棍球装备:Lacrosse Monkey
2020/12/02 全球购物
优秀团员个人事迹材料
2014/01/29 职场文书
大学生求职工作的自我评价
2014/02/13 职场文书
大学军训感言1500字
2014/03/09 职场文书
婚内分居协议书范文
2014/11/26 职场文书
2015年创先争优工作总结
2015/05/23 职场文书
2016大学生求职自荐信范文
2016/01/28 职场文书
导游词之长城八达岭
2019/09/24 职场文书
MutationObserver在页面水印实现起到的作用详解
2022/07/07 Javascript