微信小程序利用key实现列表性能的提升

微信小程序利用key实现列表性能的提升

key值在列表渲染的时候,能够提升列表渲染性能,为什么呢?首先得想想小程序的页面是如何渲染的,主要分为以下几步:

  • 将wxml结构的文档构建成一个vdom虚拟数
  • 页面有新的交互,产生新的vdom数,然后与旧数进行比较,看哪里有变化了,做对应的修改(删除、移动、更新值)等操作(对比vue、react)
  • 最后再将vdom渲染成真实的页面结构

key值的作用就在第二步,当数据改变触发渲染层重新渲染的时候,会校正带有 key
的组件,框架会确保他们被重新排序,而不是重新创建,以确保使组件保持自身的状态,并且提高列表渲染时的效率。key值如果不指明,默认会按数组的索引来处理,因而会导致一些类似input等输入框组件的值出现混乱的问题。

  • 不加key,在数组末尾追加元素,之前已渲染的元素不会重新渲染。但如果是在头部或者中间插入元素,整个list被删除重新渲染,且input组件的值还出现了混乱,值没有正常被更新
  • 添加key,在数组末尾、中间、或者头部插入元素,其它已存在的元素都不会被重新渲染,值也能正常被更新

因而,在做list渲染时,如果list的顺序发生变化时,最好增加key,且不要简单的使用数组索引当做key,需要用唯一值当成key。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452587.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS MySQL 5.7编译安装

CentOS MySQL 5.7编译安装 MySQL 5.7 GA版本的发布,也就是说从现在开始5.7已经可以在生产环境中使用,有任何问题官方都将立刻修复。 MySQL 5.7主要特性: 更好的性能:对于多核CPU、固态硬盘、锁有着更好的优化,每秒100…

为什么设计师创造的编程语言更受欢迎?

导读:在编程的世界里,语言纷繁多样,而大部分真正广泛流行的语言并不是那些学术界的产物,而是在通过自由发挥设计出来的。 和那些在最后期限重压下产生的语言版本比较起来,从一定程度上来看,从学术界产生出…

状态转换图简介

状态转换图(简称为状态图)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。此外,状态图还指明了作为特定事件的结果系统将做哪些动作。 (一)状态 状态是任何可以被观察到的系统行为模式,一个状态代表…

C#常用单元测试框架比较:XUnit、NUnit和Visual Studio(MSTest)

做过单元测试的同学大概都知道以上几种测试框架,但我一直很好奇它们到底有什么不同,然后搜到了一篇不错的文章清楚地解释了这几种框架的最大不同之处。 地址在这里:http://www.tuicool.com/articles/F3eEn2j 简而言之,三者是非常相…

实验五 类和对象-3

1.ex3.cpp 1 #include <iostream>2 #include <vector>3 #include <string>4 using namespace std;5 6 // 函数声明 7 void output1(vector<string> &); 8 void output2(vector<string> &); 9 10 int main() 11 { 12 vector<st…

Vector用法详解

这篇文章的目的是为了介绍std::vector&#xff0c;如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用&#xff0c;如在remove_if()和for_each()中的使用。通过阅读这篇文章读者应该能够有效地使用vector容器&#xff0c;而且应该不会再去…

linux 共享移动硬盘,随时登陆上QQ 自带Linux移动硬盘实战

在以往我们的观念中&#xff0c;移动硬盘顶多就是个移动存储设备&#xff0c;根本谈不上有什么功能&#xff0c;但今天这款一盘通却将我们原始的观念打了一个180大转弯&#xff01;如果你的电脑支持USB设备启动&#xff0c;那么只需要在BIOS进行一下更改&#xff0c;一盘通就可…

需求分析的图形工具(层次方框 warnier IPO)

1 层次方框图 层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。 例如&#xff0c;描绘一家计算机公司全部产品的数据结构可以用下图层次方框图表示。 这家公司的产品由硬件、软件和服务3类产品组成&#xff0c;软件产品又分为系统软件和应用软件&#xf…

如何处理错误信息 Pricing procedure could not be determined

2019独角兽企业重金招聘Python工程师标准>>> 当给一个SAP CRM Quotation文档的行项目维护一个产品时&#xff0c;遇到如下错误信息&#xff1a;Pricing procedure could not be determined 通过调试得知错误消息在function module CRM_PRIDOC_COM_PRCPROC_DET_SEL第…

Flask爱家租房--订单(下订单)

文章目录0 、效果展示1、思路总结2、后端代码3、前端js4、前端html0 、效果展示 detail.html booking.html 1、思路总结 1&#xff09;用户打开房屋详情页detail.html之后&#xff0c;后端detail.js会判断此访问用户是否为房东&#xff0c;若不是房东&#xff0c;则在详情…

linux下各权限的细分

PS&#xff1a;有时候你发现用root权限都不能修改某个文件&#xff0c;大部分原因是曾经用chattr命令锁定该文件了。chattr命令的作用很大&#xff0c;其中一些功能是由Linux内核版本来支持的&#xff0c;不过现在生产绝大部分跑的linux系统都是2.6以上内核了。通过chattr命令修…

红帽linux lnmp搭建,Linux(redhat5.4)下lnmp环境的搭建

在前面我们已经实现了lamp架构的创建&#xff0c;今天就让我们来看一看lnmp架构是如何实现的。计划的实验步骤如下&#xff1a;1. 数据库mysql的安装2. Nginx的安装&#xff0c;libevent(编译库代码)的安装&#xff0c;pcre的安装3. Php的安装4. 测试1. Mysql 的安装//注意:小编…

为什么借助开源学习是最有效的?

导读&#xff1a;盛大创新院高级研究员庄表伟近日编撰系列文章《借助开源项目&#xff0c;学习软件开发》活动&#xff0c;引起业界关注。庄表伟认为&#xff0c;通过编撰这些文章&#xff0c;希望更多开发者能够借助开源项目提高开发效率&#xff0c;减少重复劳动并从开源软件…

redux middleware 源码分析

原文链接 middleware 的由来 在业务中需要打印每一个 action 信息来调试&#xff0c;又或者希望 dispatch 或 reducer 拥有异步请求的功能。面对这些场景时&#xff0c;一个个修改 dispatch 或 reducer 代码有些乏力&#xff0c;我们需要一个可组合的、自由增减的插件机制&…

Flsak爱家租房--订单(获取用户订单、用户评论)

文章目录0.页面效果1.思路总结2.后端代码3.前端js4.前端html0.页面效果 1.思路总结 1&#xff09;用户点击“我的订单”&#xff0c;js向后端获取数据&#xff0c;并加载在前端的模板中&#xff1b; 2&#xff09;用户点击相应订单的“去支付”按钮&#xff0c;js向引导用户…

【SCOI2005】【BZOJ1087】互不侵犯King(状压dp)

problem 在NN的棋盘里面放K个国王每个国王会攻击它周围的一圈共8个格子使他们互不攻击&#xff0c;共有多少种摆放方案N < 9solution 用01串表示某一行放置的情况 首先枚举当前做到第几行&#xff0c;以及当前一共放了几颗棋子。于是状态f[i][j][k]表示到第i行&#xff0c;一…

软件工程形式化技术简介

形式化技术在软件工程中有效的提高了开发的效率、改进了软件开发的质量、减少了开发费用。形式化的技术容易在软件的规约上取得一致性&#xff0c;它属于一种非常有效的交流方式。 (一)非形式化的缺点 用自然语言书写的系统规格说明书&#xff0c;可能存在矛盾、二义性、含糊性…

华为荣耀笔记本linux怎么下载软件,华为magic book笔记本怎么下载软件

大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。华为magic book笔记本下载软件的方法如下&#xff1a;1、首先&#xff0c;点击桌面开始图标&#xff0c;找到应用商店&#xff0c;并点击。2、进入应用商店&#xff0c;点击搜索栏&a…

国内外软件开发上的差距与分析

提高自己&#xff0c;迎接好的未来。 在开始任何其他文字之前&#xff0c;首先有必要正视一个根本现实&#xff1a;国内外软件开发的水平是有差距的。 这一结论的最直接证据是每一轮新技术的发起者基本上都是国外的人或公司&#xff1a; 从方法论&#xff08;CMMI&#xff0…