目录
加上 wx:key 之后,会根据给定的 key 进行排序么?
key 重名时是否会报错
首页 微信小程序 小程序开发 小程序:使用 wx:key 提升 wx:for 的渲染效率

小程序:使用 wx:key 提升 wx:for 的渲染效率

Apr 01, 2019 pm 02:41 PM


这边文章的内容主要讲述在小程序中使用 wx:key 提升 wx:for 的渲染效率


之所以加上 wx:key 会提升 wx:for 的渲染效率,原因是(我的初步理解)

  • 如果不加 wx:key, 在 setData 之后,如果 array 内的数据如果发生改变,会重新创建前端的渲染对象
  • 加上 wx:key,重新渲染时,只是将对应的对象重新排序。未发生变化的对象,不会重新创建

参考官方的解释

当数据改变触发渲染层重新渲染的时候,会校正带有 key 的组件,框架会确保他们被重新排序,而不是重新创建,以确保使组件保持自身的状态,并且提高列表渲染时的效率。

需要验证的问题

加上 wx:key 之后,会根据给定的 key 进行排序么?

写个简单的测试页面

<block wx:for="{{languages}}" wx:for-item="language" wx:key="id">
  <text class="log-item">{{ language.id }} . {{ language.name }}</text>
</block>

data: {
  languages: [
    {id: 1, name: &#39;php&#39;},
    {id: 4, name: &#39;javascript&#39;},
    {id: 3, name: &#39;golang&#39;},
    {id: 2, name: &#39;python&#39;},
    {id: 5, name: &#39;java&#39;},
  ],
},
登录后复制

1

从测试结果来看,并不会影响到排序。

key 重名时是否会报错

data: {
  languages: [
    {id: 1, name: &#39;php&#39;},
    {id: 4, name: &#39;javascript&#39;},
    {id: 3, name: &#39;golang&#39;},
    {id: 2, name: &#39;python&#39;},
    {id: 5, name: &#39;java&#39;},
  ],
},

click: function () {
	let language = {id: 5, name: &#39;kotlin&#39;}
	let languages = this.data.languages
	languages.push(language)

	this.setData({
		languages: languages
	})
}
登录后复制

微信小程序开发工具只会报一个警告,并不会导致程序崩溃

VM6265:2 Do not set same key {5} in wx:key

比较奇怪的是,这个警告只有在重新渲染时才会报,如果初始化时就使用同样的 key,并不会导致警告。

相关视频连接:小程序开发教程

以上是小程序:使用 wx:key 提升 wx:for 的渲染效率的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)