小程序:使用 wx:key 提升 wx:for 的渲染效率
之所以加上 wx:key 会提升 wx:for 的渲染效率,原因是(我的初步理解)如果不加 wx:key, 在 setData 之后,如果 array 内的数据如果发生改变,会重新创建前端的渲染对象加上 wx:key,重新渲染时,只是将对应的对象重新排序。未发生变化的对象,不会重新创建参考官方的解释
需要验证的问题加上 wx:key 之后,会根据给定的 key 进行排序么?写个简单的测试页面<block wx:for="{{languages}}" wx:for-item="language" wx:key="id"><text>
从测试结果来看,并不会影响到排序。key 重名时是否会报错data: {languages: [{id: 1, name: 'php'},{id: 4, name: 'javascript'},{id: 3, name: 'golang'},{id: 2, name: 'python'},{id: 5, name: 'java'},],},click: function () {let language = {id: 5, name: 'kotlin'}let languages = this.data.languageslanguages.push(language)this.setData({languages: languages})}微信小程序开发工具只会报一个警告,并不会导致程序崩溃
比较奇怪的是,这个警告只有在重新渲染时才会报,如果初始化时就使用同样的 key,并不会导致警告。
相关视频连接:小程序开发教程以上就是小程序:使用 wx:key 提升 wx:for 的渲染效率的详细内容,更多请关注小潘博客其它相关文章!