简单理解vue中track-by属性
作者:littledew 发布时间:2024-04-30 10:21:05
标签:vue,track,by
本文实例为大家解析了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都不变的情况下,才不被重新渲染,只有第一组符合条件。
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的值第一、二条都没改变,所以一、二都没有重新渲染。
模板中同时使用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.js前端组件学习教程》,欢迎大家学习阅读。


猜你喜欢
- jupyter notebook 图片显示模糊的解决办法加入这几行代码即可:矢量图设置import matplotlib.pyplot as
- vue2.0里,不再有自带的过滤器,需要自己定义过滤器。定义的方法如下: 注册一个自定义过滤器,它接收两个参数:过滤器 ID 和过滤器函数。
- 本文实例讲述了Go语言算法之寻找数组第二大元素的方法。分享给大家供大家参考。具体如下:该算法的原理是,在遍历数组的时,始终记录当前最大的元素
- 1、 开始->设置->控制面板->管理工具->服务 停止所有Oracle服务。 2、 开始->程序->Oracle - OraHome81-
- 首先:文章用到的解析库介绍BeautifulSoup:Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修
- 最近由于单位数据库硬盘空间不足,整理的时候查了许多文章,也进行了测试,整理后得出一些经验供大家参考。首先,在网上看到一篇文章,如何Shrin
- 由于不同的浏览器,比如Internet Explorer 6,Internet Explorer 7,Mozilla Firefox等,对C
- 摘要With the continuous development of time series prediction, Transform
- CSS样式和JavaScript脚本是应该放在外部文件中呢?还是把它们放在页面本身之内呢?如何处理是关于一些性能规则的思维,就这些问题,我们
- 首先要作出决策,你是否想要使用最新的开发版本或最终的稳定版本。在MySQL开发过程中,同时存在多个发布系列,每个发布处在成熟度的不同阶段:&
- 效果如下所示:# -*- coding: utf-8 -*-import turtle# 绘制太极图函数def draw_TJT(R):&n
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&
- 本文实例讲述了Python实现合并同一个文件夹下所有txt文件的方法。分享给大家供大家参考,具体如下:一、需求分析合并一个文件夹下所有txt
- 1. 进入mysql/bin目录下输入mysqladmin processlist; 2. 启动mysql,输入show processli
- <SCRIPT language="JavaScript"><!-- Beginfunction mo
- MySQL数据库没有增量备份的机制,但它提供了一种主从备份的机制,就是把主数据库的所有的数据同时写到备份数据库中。实现MySQL数据库的热备
- 1.BeautifulSoup简介BeautifulSoup4和 lxml 一样,Beautiful Soup 也是一个HTML/XML的解
- 一、Oracle 11g安装安装之前要先确定自己的电脑配置,以windows为例,如果是win7以下系统如xp等,可以选择Oracle 10
- gzip 是什么东东呢?百科跟我们说gzip是GNU zip的缩写,它是一个 GNU 自由软件的文件压缩程序。…gzip 的基础是 DEFL
- 随着因特网的发展,在网络环境中,数据库应用渐渐向操作简单、功能实用的方向发展。本文介绍如何利用ASP技术实现对数据库进行在线维护的方法,并给